DefaultSqlSession生成

当mybatis调用动态代理的时候,会调用MapperProxy的invoke方法,但是先来看下当DefaultSqlSessionFactory在openSession的时候做了什么事情,如图1:

图1:

这里涉及到两个方法openSessionFromDataSource和openSessionFromConnection,看下分别做了什么事情,如图2:
图2:

调用getTransactionFactoryFromEnvironment获取事务工厂,如果在配置的时候没有实现,那么就用默认的,返回的是ManagedTransactionFactory,如图3:
图3:

但是,在配置后初始化的时候,一般都会设置,而且一般是设置成JDBC,如图4:
图4:

那么在Enviroments初始化的时候已经加载了默认的事务工厂,Configuration也预先帮我们加载了两个事务工厂类,如图5:
图5:

在看下Enviroments初始化,如图6:
图6:

那么接着往下看,在获取了事务工厂以后,通过调动transactionFactory.newTransaction实例化事务,可以设置隔离级别和是否自动事务,如图7:
图7:

看下隔离级别有哪些,提供了6种,我就不做解释了,如图8:
图8:

在调用Configuration来生成执行器,如图9:
图9:

通过上面几步,就生成了一个DefaultSqlSession。
openSessionFromConnection和openSessionFromDataSource差不多,只是openSessionFromConnection使用的Connection来获取DefaultSqlSession。
如有不对,请指出,共同进步,谢谢!

转载于:https://www.cnblogs.com/shenqiaqia/p/10235081.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值