共计 896 个字符,预计需要花费 3 分钟才能阅读完成。
前言
今天在学习 MyBatis 的时候,使用 select 查询语句可以查出结果并准确无误,但是使用 insert 语句的时候无法插入,因为我使用的是 mysql 数据库,并且给主键 ID 设置了自动递增,在每次插入之后自动递增值都会 +1,不过数据库就是没有记录,我想应该是数据库事务没有提交的原因导致的。
解决办法
在进行了一些测试之后,果不其然是事务没有自动提交的原因导致回滚而造成的没有插入成功,现提供如下两种解决方案。
方案一
在进行了 insert
、update
、delete
等操作之后,在其后进行手动提交事务,例如:
public void addUser(User user) {SqlSession sqlSession = dbAccess.getSqlSession();
sqlSession.insert("User.addUser",user);
sqlSession.commit();
sqlSession.close();}
方案二
在 MyBatis 的 SqlSessionFactory 中打开一个新的会话时,是可以进行设定是否自动提交事务。
public SqlSession getSqlSession() {
// 拿到 MyBatis 配置文件,获取数据库连接信息
Reader reader = null;
try {reader = Resources.getResourceAsReader("mybatis-config.xml");
} catch (IOException e) {e.printStackTrace();
}
// 获取到数据库会话工厂 SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
// 打开一个数据库会话
return sqlSessionFactory.openSession(true);
}
后记
经过如上的操作之后,这时使用 MyBatis 进行增删改操作时候就不会出现之前的事务自动回滚问题了。
正文完
使用官方微信小程序体验更多功能