MyBatis使用Insert无法插入解决办法

9,526次阅读
41条评论

前言

今天在学习MyBatis的时候,使用select查询语句可以查出结果并准确无误,但是使用insert语句的时候无法插入,因为我使用的是mysql数据库,并且给主键ID设置了自动递增,在每次插入之后自动递增值都会+1,不过数据库就是没有记录,我想应该是数据库事务没有提交的原因导致的。 MyBatis使用Insert无法插入解决办法

解决办法

在进行了一些测试之后,果不其然是事务没有自动提交的原因导致回滚而造成的没有插入成功,现提供如下两种解决方案。

方案一

在进行了insertupdatedelete等操作之后,在其后进行手动提交事务,例如:

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进行增删改操作时候就不会出现之前的事务自动回滚问题了。

12
憧憬Licoy
版权声明:本站原创文章,由憧憬Licoy于2017年03月18日发表,共计1448字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(41条评论)
Loading...
旅行者 评论达人LV.1
2017-05-02 21:04:32 回复

学习了

大香蕉 评论达人LV.1
2017-04-25 22:19:33 回复

汗··没学问就是可怕···看不懂汗

Koolight 评论达人LV.3
2017-04-24 23:07:56 回复

膜拜一下,太厉害了,表示看不懂~~ :mrgreen:

蒸汽回收机 评论达人LV.1
2017-04-22 10:29:49 回复

感觉挺难的

老金@金博客 评论达人LV.1
2017-04-19 14:20:05 回复

学习sql难么?

吃货小栈 评论达人LV.1
2017-04-16 22:36:04 回复

我竟然看成为了MyBasic,囧!
难道我是怀念Basic了!

夏日博客 评论达人LV.1
2017-04-14 17:29:57 回复

mysql用得最多的就是增删改查了。

新民 评论达人LV.1
2017-03-26 17:10:27 回复

博主,看您的博客很不错,不妨加个友链吧

新民 评论达人LV.1
2017-03-26 17:09:28 回复

现在一般在公司基本都用的是mybatis +spring mvc ,事务都是交由spring管理的。只需配置一下就可以了