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

  1. 当查询的数据为多条时,不能使用实体类作为返回值,只能使用集合,否则会抛出异常TooManyResultsException;但是若查询的数据只有一条,可以使用实体类或集合作为返回值
相关推荐
高兴达23 分钟前
Spring boot入门工程
java·spring boot·后端
Ronin30524 分钟前
【C++】类型转换
开发语言·c++
萧曵 丶24 分钟前
Spring @TransactionalEventListener
java·数据库·spring·事务·transactional·异步
笑衬人心。25 分钟前
HTTPS详解:原理 + 加解密过程 + 面试问答
java·网络协议·http·面试·https
蓝澈112127 分钟前
弗洛伊德(Floyd)算法-各个顶点之间的最短路径问题
java·数据结构·动态规划
再见晴天*_*36 分钟前
logback 日志不打印
java·服务器·logback
mrbone1140 分钟前
Git-git worktree的使用
开发语言·c++·git·cmake·worktree·gitab
幽络源小助理44 分钟前
SpringBoot基于JavaWeb的城乡居民基本医疗信息管理系统
java·spring boot·学习
欧阳有财1 小时前
[java八股文][Mysql面试篇]日志
java·mysql·面试
浪裡遊1 小时前
Sass详解:功能特性、常用方法与最佳实践
开发语言·前端·javascript·css·vue.js·rust·sass