前言
今天在学习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进行增删改操作时候就不会出现之前的事务自动回滚问题了。
学习了
@旅行者
汗··没学问就是可怕···看不懂汗
@大香蕉 不是没文化,只是我们专业不一样
膜拜一下,太厉害了,表示看不懂~~
@Koolight :arrow: okay
感觉挺难的
学习sql难么?
@老金@金博客 难不难看自己的能力
我竟然看成为了MyBasic,囧!
难道我是怀念Basic了!
@吃货小栈 没玩过MyBasic 0.0
@憧憬Licoy 哈哈,那是很久远以前的一种解释型编程语言了!比尔.盖茨小时候很喜欢玩的一种编程语言。现在应该还有,叫Visual Basic好像!
mysql用得最多的就是增删改查了。
@夏日博客 关系型数据库一般都是这
博主,看您的博客很不错,不妨加个友链吧
@新民 可以,内页还是首页?
现在一般在公司基本都用的是mybatis +spring mvc ,事务都是交由spring管理的。只需配置一下就可以了
@新民 是的
« 1 2
SpringCloud使用Zuul出现“Forwarding error”错误解决方法
Chatroulette-全世界随机视频聊天网站
IntelliJ IDEA下将JavaWeb打包成war包并发布到tomcat步骤说明
LiRecord留言板系统V2.0正式版发布
SpringBoot打包成war包并放置在tomcat运行
SpringBoot+Shiro整合进行登录验证与权限控制
多风格自适应WordPress主题Puock正式开源!
非大众版WordPress纯代码实现阅读量统计
面包多WordPress插件 – 把你的文章变成付费版
git reset —hard后暂存区代码跑哪儿去了?
选择表情
分享至