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

11,180次阅读
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发表,共计896字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(41条评论)
验证码
载入中...
旅行者 评论达人 LV.1
2017-05-02 21:04:32 回复

学习了

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

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

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

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

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

感觉挺难的

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

学习sql难么?

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

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

 Windows  Chrome
    憧憬Licoy 博主
    2017-04-19 18:01:44 回复

    @吃货小栈 没玩过MyBasic 0.0

     Windows  Chrome
      吃货小栈 评论达人 LV.1
      2017-04-21 01:31:24 回复

      @憧憬Licoy 哈哈,那是很久远以前的一种解释型编程语言了!比尔.盖茨小时候很喜欢玩的一种编程语言。现在应该还有,叫Visual Basic好像!

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

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

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

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

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

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

 Windows  Chrome