关键词:Spring | 整合 | 持久层 | MyBatis | 细节
本专栏通过理论和实践相结合,系统学习框架核心思想及简单原理,原创不易,如果觉得文章对你有帮助,点赞收藏支持博主 ✨
@Test
public void t1(){
ApplicationContext ctx = new ClassPathXmlApplicationContext("/application.xml");
// 规定获取的id首字母小写
UserDAO userDAO = (UserDAO) ctx.getBean("userDAO");
User user = new User();
user.setName("小张");
user.setPwd1("53434534");
userDAO.save(user);
}
在测试时,我们没有再手动提交事务,但是也一样完成了插入操作,这是怎么回事呢?
实际上控制连接对象 Connection
是由连接池 DataSource
控制的,没有进行整合前,连接池对象是 MyBatis 提供的,由 MyBatis
创建连接,现在连接池是 Druid
。
MyBatis中通过连接对象将 AutoCommit 方法的值设置为了 false,也就是开启了事务,所以最后我们需要手动提交才可以。
Connection.setAutoCommit(false);
而 Druid
在创建连接后,并没有修改默认值,默认值就是 true
,自动提交事务。
Connection.setAutoCommit(true);
注意: 实际开发,会手动控制事务,多条SQL一起成功,一起失败,后续会通过 Spring 的事务控制解决。
座右铭:不要在乎别人如何看你,要在乎你自己如何看未来,看梦想,看世界…!
一起学习的可以私信博主或添加博主微信哦。
专栏:订阅专栏 ✅
关注:关注博主