源码地址:https://github.com/mybatis/mybatis-3/
仓库地址:https://gitcode.net/qq_42665745/mybatis/-/tree/03-parse-mapperXML
Mapper XML的解析和注册使用
流程:
1.Resources加载MyBatis配置文件生成Reader字符流
2.SqlSessionFactoryBuilder开始引导构建SqlSessionFactory,包括两步:
- 第一步是在XMLConfigBuilder中使用dom4j解析xml文件,将解析的SQL包装成MappedStatement对象存入Configuration中,然后因为xml的namespace和对应的Dao接口路径相同,使用namespace初始化Dao接口的映射器工厂,也存入Configuration中
- 第二步,使用Configuration初始化SqlSessionFactory
3.使用SqlSessionFactory的openSession创建一个SqlSession,参数传入Configuration
4.sqlSession.getMapper(IUserDao.class);实际是从Configuration中拿到其映射器工厂,然后使用映射器工厂创建IUserDao的代理对象
5.userDao.queryUserInfoById("u10001");当执行方法时,实际执行的是代理类的invoke方法,在这里会根据xml的sql类型执行SqlSession中的方法,然后返回结果