当前位置: 首页 > news >正文

MyBatis之测试添加功能

1.

首先Mybatis为我们提供了一个操作数据库的会话对象叫Sqlsession,所以我们就需要先获取sqlsession对象:

//加载核心配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//获取sqlSessionFactoryBuilder(是我们提供sqlSession的一个工厂对象的一个构建对象)
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//获取sqlSessionFactory(获取sqlSession工厂对象)
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
//获取sqlSession(获取Mybatis为我们提供一个操作数据库的会话对象)
SqlSession sqlSession = sqlSessionFactory.openSession();

补充:

- SqlSession:代表Java程序和数据库之间的会话。(HttpSession是Java程序和浏览器之间的会话)

- SqlSessionFactory:是“生产”SqlSession的“工厂”

- 工厂模式:如果创建某一个对象,使用的过程基本固定,那么我们就可以把创建这个对象的相关代码封装到一个“工厂类”中,以后都使用这个工厂类来“生产”我们需要的对象

2.

然后通过SqlSession来实现我们当前Mybatis中的功能,再访问一个sql语句 去执行sql语句来获得一个结果。再者Mybatis是面向接口编程,我们调用mapper接口中的方法,它就会自动的匹配一个sql语句来执行,所以我们接下来获取mapper接口的对象(一个接口我们想创建对象就需要实现类,但之前我们并没有实现类)

传进去的参数是类型的一个class对象,然后这个类型的泛型是T,而这个方法的返回值是我们当前的T对象,即当我们传进去一个类型的class对象后,它会帮助我们获取这个类型的实例化对象。

最后总结一下流程:

每当我们去调用mapper接口中的方法,

他就根据我们的mapper接口找到映射文件,

然后根据当前调用的方法找到我们的sql语句

增删改受影响的是行数。当sql语句执行成功后,但在数据库中没有添加数据。

这里是(transactionManager)事务管理器,type=JDBC表示用u最原始的JDBC方式来管理事务,所以说现在事务的提交或者回滚都需要手动处理,即造成在数据库中没有添加数据。

补充:

优化1

优化2

通过日志功能来监测当前实现功能他所执行的sql。

增加修改数据功能

先在mapper接口写好方法,然后通过方法去映射文件,再编写好sql语句。

特殊的查询功能

首先有返回值(一个对象或者一个对象的集合)

补充:

  1. 查询的标签select必须设置属性resultType或resultMap,用于设置实体类和数据库表的映射关系  

    - resultType:自动映射,用于属性名和表中字段名一致的情况  

    - resultMap:自定义映射,用于一对多或多对一或字段名和属性名不一致的情况(自动的把我们当前查询的结果的字段名来作为属性名进行赋值,如果能匹配就赋值不能就不赋值)

  2. 当查询的数据为多条时,不能使用实体类作为返回值,只能使用集合,否则会抛出异常TooManyResultsException;但是若查询的数据只有一条,可以使用实体类或集合作为返回值

http://www.lqws.cn/news/144433.html

相关文章:

  • 18650锂电池组点焊机:高效组装锂电池的关键工具|比斯特自动化
  • XDMA pcie环路测试
  • Oracle 的 SEC_CASE_SENSITIVE_LOGON 参数
  • 代码中文抽取工具并替换工具(以ts为例)
  • 在 CentOS 上将 Ansible 项目推送到 GitHub 的完整指南
  • 高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
  • [论文阅读] 人工智能+软件工程 | MemFL:给大模型装上“项目记忆”,让软件故障定位又快又准
  • [pdf、epub]300道《软件方法》强化自测题业务建模需求分析共257页(202505更新)
  • 机器学习监督学习实战四:九种回归算法对波士顿房价数据进行回归预测和评估方法可视化
  • 【从0-1的CSS】第1篇:CSS简介,选择器已经常用样式
  • centos部署k8s v1.33版本
  • asp.net mvc如何简化控制器逻辑
  • vue2 , el-select 多选树结构,可重名
  • 使用vite-plugin-html在 HTML 文件中动态注入数据,如元数据、环境变量、标题
  • Go中的协程并发和并发panic处理
  • MVCC机制:Undo Log版本链与ReadView机制
  • MVCC实现原理
  • bug 记录 - 使用 el-dialog 的 before-close 的坑
  • 网站首页菜单两种布局vue+elementui顶部和左侧栏导航
  • Pandas和Django的示例Demo
  • wpf Behaviors库实现支持多选操作进行后台绑定数据的ListView
  • MySQL 高可用基石 - 复制监控与常见 HA 方案
  • DBSyncer:开源数据库同步利器,MySQL/Oracle/ES/SqlServer/PG/
  • 企业培训学习考试系统源码 ThinkPHP框架+Uniapp支持多终端适配部署
  • 行列式的性质
  • exp1_code
  • Redis 缓存策略:借助缓存优化数据库性能并保障数据一致性
  • 9.axios底层原理,和promise的对比(2)
  • 外网访问内网服务器常用的三种简单操作步骤方法,本地搭建网址轻松让公网连接
  • 游戏设计模式 - 子类沙箱