Mybatis的解析和运行原理:SqlSession运行过程

 使用Mybatis时,最常看见的语句之一:

XXXMapper mapper = sqlSession.getMapper(XXXMapper.class);
复制代码

通过getMapper()方法得到了一个XXXMapper的对象。

要知道XXXMapper本身是一个接口,而我们代码是没有写实现类的。所以该对象是由Mybatis通过:反射和动态代理,这两项技术创建了一个代理对象,现在我们来分析一下这个工程。

SqlSession是一个接口,有一个实现类DefaultSqlSession,实现了getMapper方法:

@Override
public <T> T getMapper(Class<T> type) {
  return configuration.getMapper(type, this);
}
复制代码

我们会发现它调用了configuration.getMapper方法,回想一下这个configuration怎么来的。

回顾:

build方式创建SqlSessionFactory时,SqlSessionFactory也是一个接口,它的默认实现类是DefaultSqlSessionFactory

sqlSessionFactory = new SqlSessionFactoryBuilder().build(xml);
复制代码

configuration通过parser.parse()返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值