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;但是若查询的数据只有一条,可以使用实体类或集合作为返回值
相关推荐
猿究院_夏燊7 小时前
Spring Bean 生命周期
java·后端·spring
Wang's Blog7 小时前
Java 项目实战: 交友项目:登录链路回顾与今日任务地图
java·开发语言·状态模式·交友
信誓旦旦的程序猿8 小时前
【Python量化实战宝典 #08】可转债与债券接口手册:转股价·溢价率·纯债价值(Python 可跑)
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
砚底藏山河8 小时前
python量化:行情数据回溯
java·开发语言·python·金融·maven
今年下半年8 小时前
AI智能体项目实战记录(02):初始化 Python 项目
开发语言·人工智能·python·fastapi
Jlzn88888 小时前
华东电芯分选通道数怎么配才不堵线
java·人工智能·架构·自动化·制造
Williamtym8 小时前
PickGo Lab实践:用浏览器、Python和MCP串起机器人搬运仿真
开发语言·python·机器人
香吧香8 小时前
GRPC连接机制---长连接分析
java·网络与传输协议
DongQiShanRen8 小时前
六根硬件映射(四):归属澄清、两处不一致与卷十一总表
开发语言·人工智能·算法·rust·哈希算法·集成学习
CS创新实验室8 小时前
Python 对象“死“了之后去了哪?——引用计数与分代垃圾回收
开发语言·jvm·python