本篇文章小编给大家分享一下mybatis事务回滚配置操作代码,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
在mybatis进行批量操作的时候,插入多条数据时,设置回滚但是前面几条还是插入,经过尝试
问题所在:
官网api上openSession(false)就可以回滚了,但是用session.getConnection().getAutoCommit()查看还是true
解决方法:
将DataSource配置改为AutoCommit(false)
将conn设置setAutoCommit(false),用conn进行提交,回滚操作
例子:
SqlSession session = sqlSessionFactory.openSession(false); Connection conn = session.getConnection(); conn.setAutoCommit(false); try { UserMapper mapper = session.getMapper(UserMapper.class); for (String name : names) { //各种操作 User user = new User(); user.setName(name); //插入,需要回滚 mapper.insert(user); } conn.commit(); } catch (Exception e) { //有重复回滚 conn.rollback(); throw e; } finally { session.close(); }