SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(this.getClass().getClassLoader().getResourceAsStream("mybatis-config.xml"));
SqlSession sqlSession = sqlSessionFactory.openSession();
User userMapper = sqlSession.getMapper(User.class);
首先,sqlSession调用getMapper(Class<?> type)方法,参数里传入指定的Class类型,返回给我们的就是一个传入该类型的对象,这个对象其实是一个代理对象,
进入到getMapper(type)方法后,再次调用 configuration.getMapper(type,sqllSession)
,
在Configuration类中,继续调用mapperRegistry.getMapper(type,sqlSession)
方法。
mapperRegistry, 在获取SqlSessionFactory时,解析mapper子节点时,将获取的Mapper接口都放在一个knowMappers(其实是一个hashMap)中。
在mapperRegistry.getMapper(type,sqlSession)方法中,先从knowMappers取出该type对应的mapperProxyFactory,
顾名思义,这是一个mapper代理工厂,我们需要的对象应该就是从工厂中生成的。
接着调用mappe