前言
注意:
学习源码一定一定不要太关注代码的编写,而是注意代码实现思想:
通过设问方式来体现代码中的思想;方法:5W+1H
源代码: https://gitee.com/xbhog/mybatis-xbhog ; https://github.com/xbhog/mybatis-xbhog ;交个朋友,有价值欢迎star。
回顾&分析
上一局实现Mapper接口和映射器通过代理类的方式进行链接。
上一局测试类:【简写MyBatis】01-简单映射器;虽然基本功能实现了,但是还不智能,可以发现该测试类中的映射器代理工厂只能实现单一的接口代理,SqlSession也需要规范化处理;将映射器代理和方法的调用类似服务进行包装。
@Test
public void test_MapperProxyFactory() {
MapperProxyFactory<IUserDao> factory = new MapperProxyFactory<>(IUserDao.class);
Map<String, String> sqlSession = new HashMap<>();
sqlSession .put("com.xbhog.IUserDao.getUserName","模拟执行 Mapper.xml 中 SQL 语句的操作:查询用户姓名");
IUserDao userDao = factory.newInstance(sqlSession);
String res = userDao.queryUserName("10001");
logger.info("测试结果:{}", res);
}
目的
- 根据包路径实现接口的扫描和注册
- SqlSession规范化处理
实现
项目结构:
└─src
├─main
│ └─java
│ └─com
│ └─xbhog
│ ├─binding
│ │ ├─MapperProxy.java
│ │ ├─MapperProxyFactory.java
│ │ └─MapperRegistry.java
│ └─session
│ ├─DefaultSqlSession.java
│ ├─DefaultSqlSessionFactory.java
│ ├─SqlSession.java
│ └─SqlSessionFactory.java
└─test
└─java
└─com
└─xbhog
├─AppTest.java
└─IUserDao.java
项目类图
根据包路径实现接口的扫描和注册
可以通过自定义MapperRegistry这个类实现该功能,当然你也可以叫其他的名字(zhangsan、lisi
标签:02,java,注册机,SqlSession,MapperRegistry,import,com,xbhog From: https://www.cnblogs.com/xbhog/p/18240463