ibatis源码

https://www.ibm.com/developerworks/cn/java/j-lo-ibatis-principle/
http://blog.csdn.net/gaolu/article/details/53415420


没办法不得不仔细看看数据库内部的调用情况了。
总体来说ibatis内部功能分为两大类吧;
1、sqlmapclient,用于处理参数映射,结果映射,语句处理等;
2、sqlmapsession,定义客户端在当前线程中的执行环境
另外:SqlMapExecutorDelegate 执行代理类,耦合了以上两者。


sqlmapClientImpl中,保存了代理执行类,根据线程不同保存了sqlMapSession(为何每个线程对应一个session)
sqlMapSession中,保存了代理执行类,以及sessionScope


配置文件中的几个概念:
Datasource 数据源,javax.sql.DataSource:提供连接的工厂,这个接口的实现是由驱动开发者提供的。这个接口就一个方法getConnection(),用于建立一个数据源的连接。有各种各样的datasource,阿里这边用的就是tddl-TGroupDataSource
Connection:一个与特定数据库的连接或session,在这个connection中可以执行语句或者返回结果。有创建语句,预编译语句,自动提交,默认是自动提交--执行完sql语句并提交保存在数据库中。另外还有commit,rollback,close等方法


只要有了datasource就可以进行数据库操作了,其他第三方会提供一些类方便操作。
sqlMapClient,ibatis用于解析xml配置文件


transactionManager,org.springframework.jdbc.datasource.DataSourceTransactionManager;
是PLatformTransactionManager的实现类,该接口是spring事务架构的核心接口,只有三个核心方法,获取事务,提交事务以及回滚。
transactionTemplate, org.springframework.transaction.support.TransactionTemplate;
transactionTemplate也是用于事务管理的类,可以以编程式实现事务。
详细用法:http://andylele.blog.sohu.com/142207434.html
先new一个DefaultTransactionDefinition,设置传播属性,然后通过transctionManager的getTransaction方法返回TransactionStatus,这个就是事务对象,然后执行sql语句,最后进行commint或着rollback 事务对象即可。
--先了解下transactionManager的原理,发现还有jpaTransactionManager


其实不管是sql执行或者是事务,都是针对connection做文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值