通过Mybatis深入源码分析之SqlSessionFactoryBuilder分析我们了解了SqlSessionFactoryBuilder内部源码实现以及每个类的作用,此博客将会对MapperProxy源码揭秘。
try {
// 1.mybatis配置文件
String resources = "mybatis.xml";
// 2.获取Reader对象
Reader resourceAsReader = Resources.getResourceAsReader(resources);
// 3.获取SqlSessionFactoryBuilder
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsReader);
// 4.创建对应的session
SqlSession sqlSession = build.openSession();
// 5.获取对应的mapper
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 6.执行方法
UserEntity user = userMapper.getUser(1);
System.out.println("name:" + user.getName());
} catch (Exception e) {
e.printStackTrace();
}
类图分析:
通过sqlSession.getMapper(UserMapper.class)源码:
public <T> T getMapper(Class<T> type, SqlSession sqlSession) {
return mapperRegistry.getMapper(type, sqlSession);
}
在上述代码中我们知道我们的所有mapper文件都注册到MapperRegistry中,接下来分析MapperRegistry中代码:
public <T> T getMapper(Class<T> type, SqlSession sqlSession) {
//所有的map