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;但是若查询的数据只有一条,可以使用实体类或集合作为返回值
相关推荐
看到我,请让我去学习32 分钟前
Qt— 布局综合项目(Splitter,Stacked,Dock)
开发语言·qt
GUET_一路向前1 小时前
【C语言防御性编程】if条件常量在前,变量在后
c语言·开发语言·if-else·防御性编程
曳渔1 小时前
UDP/TCP套接字编程简单实战指南
java·开发语言·网络·网络协议·tcp/ip·udp
三千道应用题1 小时前
WPF&C#超市管理系统(6)订单详情、顾客注册、商品销售排行查询和库存提示、LiveChat报表
开发语言·c#·wpf
hqxstudying1 小时前
JAVA项目中邮件发送功能
java·开发语言·python·邮件
咪咪渝粮1 小时前
JavaScript 中constructor 属性的指向异常问题
开发语言·javascript
最初的↘那颗心1 小时前
Java HashMap深度解析:原理、实现与最佳实践
java·开发语言·面试·hashmap·八股文
小兔兔吃萝卜1 小时前
Spring 创建 Bean 的 8 种主要方式
java·后端·spring
亲爱的马哥2 小时前
重磅更新 | 填鸭表单TDuckX2.9发布!
java
Java中文社群2 小时前
26届双非上岸记!快手之战~
java·后端·面试