实现映射器的注册和使用
设计
对mybatis的使用一般为以下几步:
1,加载mybatis配置,获得 SqlSessionFactory
2,调用sqlSessionFactory的openSession获得一个SqlSession
3,调用sqlSession的getMapper获得一个dao接口
4,使用dao接口的方法。
本章的设计主要为:

流程

(1)通过dao包路径得到一个MapperRegister(映射器注册机),里面有个属性为
Map<Class<?>, MapperProxyFactory<?>> 保存改mapper接口对象的代理工厂。通过ClassScanner.scanPackage方法扫描包路径,将mapper接口保存在map里面。
(2)SqlSessionFactory接收mapperRegister获得sqlSessionFactory对象。
(3)sqlSessionFacotry对象调用openSession,通过new DefaultSqlSession()实例化一个sqlSession接口。
(4)sqlSession接口里面包含了mapperRegister属性,getMapper方法,selectOne方法等。调用getMapper实际是从mapperRegister里的map获取mapperProxyFactory,然后在使用工厂的newInstance获取代理对象并返回。
(5)mapper接口调用方法,实际是代理对象执行invoke方法,而MapperProxy里面有SqlSession属性,就可以在invoke方法里面调用sqlSession方法。
文章描述了MyBatis中映射器的注册和使用过程,包括通过Dao包路径获取MapperRegister,扫描并保存Mapper接口,SqlSessionFactory创建SqlSession,SqlSession的getMapper方法从映射器注册机中获取代理对象,以及Mapper接口方法调用的代理执行过程。

被折叠的 条评论
为什么被折叠?



