MyBatis框架实现(05)从sqlSession中获取mapper

继续我们的简单版mybatis。前面的内容以及可以获取sqlSession了,下面我们来看从sqlSession中获取mapper。关于mapper我们只定义了接口,没有实现类,通过源码分析我们知道mybatis使用动态代理为我们生成。所以首先来创建一个mapper代理类:

MyBatis框架实现(05)从sqlSession中获取mapper

代理类中包含两个属性,一个是sqlSession,一个是接口类,invoke方法中,通过传入方法的全路径获取了我们自定义的MapperMethod对象,如果对象不为空就真正执行数据库方法,这里执行的内容先不定义。下面我们在sqlSession中返回mapper时就可以使用动态代理返回了:

MyBatis框架实现(05)从sqlSession中获取mapper

关于jdk动态代理有忘记的可以自己看看。能够获取mapper以后,我们的测试代码就可以得到UserMapper对象了:

MyBatis框架实现(05)从sqlSession中获取mapper

前面的准备工作差不多了,下面可以真正执行SQL语句了。

 

代码地址:https://gitee.com/blueses/mybatis-demo 17