mybatis版本:3.4.6。

mybatis默认的SqlSessionFactory是DefaultSqlSessionFactory,它openSession()的源码是:

    public SqlSession openSession() {
return this.openSessionFromDataSource(this.configuration.getDefaultExecutorType(), (TransactionIsolationLevel)null, false);
}
    private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit) {
Transaction tx = null; DefaultSqlSession var8;
try {
Environment environment = this.configuration.getEnvironment();
TransactionFactory transactionFactory = this.getTransactionFactoryFromEnvironment(environment);
tx = transactionFactory.newTransaction(environment.getDataSource(), level, autoCommit);
Executor executor = this.configuration.newExecutor(tx, execType);
var8 = new DefaultSqlSession(this.configuration, executor, autoCommit);
} catch (Exception var12) {
this.closeTransaction(tx);
throw ExceptionFactory.wrapException("Error opening session. Cause: " + var12, var12);
} finally {
ErrorContext.instance().reset();
} return var8;
}

可以看到,mybatis默认每次获取session都会开启一个事务,且不自动提交事务。如果更新操作完成后不手动commit,则在连接断开时会将更新操作回滚。

        SqlSession session = MybatisUtil.getSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
try{
UserDomain newUserDomain = new UserDomain();
newUserDomain.setAge(10);
newUserDomain.setName("scp2");
newUserDomain.setSchool("高中");
userMapper.insert(newUserDomain);
session.commit();// 如果不commit,连接断开时操作会被回滚
}
catch (Exception e){
System.out.println(e);
}
finally {
if (null != session) {session.close();}
}

最新文章

  1. PLSQL note
  2. 操作数数据类型 ntext 对于 max 运算符无效
  3. mysql中char与varchar的区别分析
  4. 必备:常用px,pt,em换算表(转)
  5. Java方法的封装
  6. SQL Server查看所有表大小、表行数和占用空间信息
  7. svn: warning: 'xxxxxx' is already under version control
  8. 事件监听addEventListener()和removeEventListener() ---------1
  9. Js获取URL中的QueryStirng字符串
  10. [Redux] Extracting Container Components (FilterLink)
  11. 基于eclipse的mybatis映射代码自动生成的插件
  12. PHP学习笔记7-JSON数据操作
  13. DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)
  14. mysql常见操作汇总
  15. CentOS6.8安装python2.7以及XX-Net
  16. 两个arduino的通信
  17. Dynamics CRM 2013 SP1 客户表单界面上联系人subgrid上的添加现有联系人功能缺失
  18. js中的数据类型、以及浅拷贝和深拷贝
  19. linux中断源码分析 - 初始化(二)
  20. Post Tuned Hashing,PTH

热门文章

  1. 「BZOJ 3270」博物馆「高斯消元」
  2. day-15递归与函数
  3. CF70D(动态凸包)
  4. php 生成读取csv文件并解决中文乱码
  5. nginx+uwsgi01---flask部署
  6. 查看和导入证书(.cer / .pfx)
  7. springmvc 4.x 转json
  8. codeforces 985C Liebig's Barrels(贪心)
  9. 阿里Java开发规约(1)
  10. 初识 iOS 自动化测试框架 WebDriverAgent