文档章节

mybaties源码解析 (org.apache.ibatis.transaction) 事务

lackiechan
 lackiechan
发布于 2017/02/17 13:47
字数 459
阅读 8
收藏 0
点赞 0
评论 0

事务包下的接口有

1、Transaction接口  主要是数据库连接获取,事务提交,事务回滚,数据库连接关闭

2、TransactionFactory事务工厂接口  主要有属性设置、根据连接新建事务、根据数据源和数据级别与是否需要自动提交参数新建事务

 

org.apache.ibatis.transaction.managed 

1、ManagedTransaction 实现事务的接口

可以根据数据库连接 或者数据源,事务级别来初始化。

成员变量有

 private DataSource dataSource;
  private TransactionIsolationLevel level;
  private Connection connection;
  private boolean closeConnection;

重点是commit和rollback是空实现,意味着交给容器进行管理。

根据初始化方式的不同,获取数据库连接就不同。没有在构造函数传入connection时,通过数据源的dataSource.getConnection()获取连接。

 

2、ManagedTransactionFactory 

在默认情况下closeConnection是关闭的,然而一些容器并不希望这样, 因此如果你需要从连接中停止 它,将 closeConnection 属性设置为 false。

 

org.apache.ibatis.transaction.jdbc 主要是jdbc事务和事务工厂的 封装

JdbcTransaction 

commit接口的实现逻辑是 连接非空而且连接不是自动提交的时候调用连接的commit函数

rollback 的实现逻辑和commit一样

close的实现是 但连接非空的时候,要调用重置自动提交的函数,将连接设置为自动提交。然后执行连接的关闭函数connection.close();

openConnection 在打开一个连接的时候先从获取到连接,然后检查连接的自动提交。如果连接的自动提交状态跟将要设定的不同时,调用  connection.setAutoCommit(desiredAutoCommit);进行设置。框架中做了异常处理,因为有些数据库驱动不支持getAutoCommit() 或者 setAutoCommit()。

 

 

JdbcTransactionFactory 实现TransactionFactory接口。通过new 的方式创建新的对象。

 

© 著作权归作者所有

共有 人打赏支持
lackiechan
粉丝 1
博文 8
码字总数 2456
作品 0
广州
mybaties源码解析(org.apache.ibatis.session)session模块

一、SqlSession :常用接口SqlSession。实现java.io.Closeable。 主要集成了 1、查询类函数 selectXXX 2、插入类函数insertXXX 3、删除类函数delete 4、事务提交commit 5、回滚rollback 6、批...

lackiechan ⋅ 2016/12/12 ⋅ 0

java高级工程师面试问题集结号(four)

1:mybaties如何实现数据库表名和实体名不一致的情况 通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致,这样就可以表的字段名和实体类的属性名一一对应上了,这...

布道牛 ⋅ 2016/09/09 ⋅ 0

mybaties源码解析(org.apache.ibatis.type)类型处理器

此模块主要是实现MyBaties数据类型和jdbc中的数据类型的转换 一、TypeHandler接口作为参数转换的基础接口: 1、设定参数函数: void setParameter(PreparedStatement ps, int i, T parameter...

lackiechan ⋅ 2016/12/12 ⋅ 0

mybaties源码解析(org.apache.ibatis.session Configuration 模块

Configuration 是用户对mybaties配置维护的类,通过io模块从xml配置文件读取配置文件。 集成的api有创建执行器,结果处理器、语句处理器、参数处理器和基础属性配置,还有多个静态成员变量维护...

lackiechan ⋅ 2016/12/13 ⋅ 0

mybatis 报ExecutorException: Executor was closed.

在同一个方法里面,有两步update数据库操作,分别是库中的两张表,但这两步是一个完整事务,第一步update成功了,第二步就报了这个错误 请高手帮忙看下,可能是什么原因? 报错如下: Caused...

kenny277 ⋅ 2016/11/20 ⋅ 1

有没有人在Jfinal中集成MyBaties,用MyBaties代替ActiveRecord

有没有人在Jfinal中集成MyBaties,用MyBaties代替ActiveRecord? 在使用JFinal中时,如果业务是和计算相关的时候,弱对象类型的Model就有些不合适了,一个好的思路是使用类似MyBaties的方式,...

萝卜哥 ⋅ 2013/12/06 ⋅ 10

mybaties源码解析 (org.apache.ibatis.executor) 执行器

执行器模块 interface Executor 1、数据更新 2、查询 3、批处理刷新 4、提交 5、回滚 6、创建缓存 7、是否缓存 8、缓存清除 9、事务获取 10、关闭、是否关闭 11、设置执行器包装对象...

lackiechan ⋅ 2016/12/13 ⋅ 0

mybaties怎么使用Jpa注解?我的意思是用mybaties的jpa标注的bean进行保存的时候是调什么方法保存?mybaties支持JPS注解吗

mybaties怎么使用Jpa注解?我的意思是用mybaties的jpa标注的bean进行保存的时候是调什么方法保存?mybaties支持JPS注解吗

554330833a ⋅ 2016/06/16 ⋅ 1

mybaties怎么使用Jpa注解?

mybaties怎么使用Jpa注解?我的意思是用mybaties的jpa标注的bean进行保存的时候是调什么方法保存

554330833a ⋅ 2016/06/16 ⋅ 1

org.apache.ibatis.builder.IncompleteElementException: Could not find parameter map

由于公司操作数据库的方式使用mybatis,由于个人以前没有用过,才学不久,写好了mapper.xml编译的时候,居然报了这个错误: 其实,使用MyBaties在编写sql配置文件时,都会遇到的一个小问题,...

双月通天 ⋅ 2016/09/21 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vue-cli是什么?

vue-cli是什么? vue-cli 是vue.js的脚手架,用于自动生成vue.js+webpack的项目模板,分为vue init webpack-simple 项目名 和vue init webpack 项目名 两种。 当然首先你的安装vue,webpack...

韦姣敏 ⋅ 16分钟前 ⋅ 0

12c rman中输入sql命令

12c之前版本,要在rman中执行sql语句,必须使用sql "alter system switch logfile"; 而在12c版本中,可以支持大量的sql语句了: 比如: C:\Users\zhengquan>rman target / 恢复管理器: Release 1...

tututu_jiang ⋅ 22分钟前 ⋅ 0

java 线程池

概述 减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务 可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为因为消耗过多的内存,而把服务器累趴下(...

轨迹_ ⋅ 27分钟前 ⋅ 0

Nginx的https配置记录以及http强制跳转到https的方法梳理

Nginx的https配置记录以及http强制跳转到https的方法梳理 一、Nginx安装(略) 安装的时候需要注意加上 --with-httpsslmodule,因为httpsslmodule不属于Nginx的基本模块。 Nginx安装方法: ...

Yomut ⋅ 39分钟前 ⋅ 0

SpringCloud Feign 传递复杂参数对象需要注意的地方

1.传递复杂参数对象需要用Post,另外需要注意,Feign不支持使用GetMapping 和PostMapping @RequestMapping(value="user/save",method=RequestMethod.POST) 2.在传递的过程中,复杂对象使用...

@林文龙 ⋅ 40分钟前 ⋅ 0

如何显示 word 左侧目录大纲

打开word说明文档,如下图,我们发现左侧根本就没有目录,给我们带来很大的阅读障碍 2 在word文档的头部菜单栏中,切换到”视图“选项卡 3 然后勾选“导航窗格”选项 4 我们会惊奇的发现左侧...

二营长意大利炮 ⋅ 44分钟前 ⋅ 0

智能合约编程语言Solidity之线上开发工具

工具地址:https://ethereum.github.io/browser-solidity/ 实例实验: 1.创建hello.sol文件 2.调试输出结果

硅谷课堂 ⋅ 45分钟前 ⋅ 0

ffmpeg 视频格式转换

转 Mp4 格式 #> ffmpeg -i input.avi -c:v libx264 output.mp4#> ffmpeg -i input.avi -c:v libx264 -strict -2 output.mp4#> ffmpeg -i input.avi -c:v libx264 -strict -2 -s 1......

Contac ⋅ 56分钟前 ⋅ 0

VCS仿真生成vpd文件(verilog)

VCS仿真生成vpd文件(verilog): https://www.cnblogs.com/OneFri/p/5987673.html SYNOPSYS VCS常用命令使用详解 https://blog.csdn.net/hemmingway/article/details/49382551 DVE是synopsys公......

whoisliang ⋅ 今天 ⋅ 0

Spring Boot启动配置原理

几个重要的事件回调机制 配置在META-INF/spring.factories ApplicationContextInitializer SpringApplicationRunListener 只需要放在ioc容器中 ApplicationRunner CommandLineRunner 启动流程......

小致dad ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部