1 通过Resources加载配置好的mybatis.xml配置文件
2 通过SqlSessionFactoryBuilder构造SqlSessionFactory
3 获取一个SqlSession对象
4 jdk动态代理生成mapper接口的代理对象
其实是通过mapperRegistry的对象,它里面是一个knownMappers的HashMap,用于存储配置文件中的mappers标签的每个mapper接口
这里通过JDK动态代理,帮mapper接口生成代理实现类
5 通过第四步返回的代理对象的getUser方法调用getMapper方法最终执行的方法,代理对象的getUser方法执行其实走的是MapperProxy的invoke方法
这里是判断sql的执行类型
总结一下:mybatis运行时要先通过resources把核心配置文件也就是mybatis.xml文件加载进来,然后通过xmlConfigBulider来解析,解析完成后把结果放入configuration中,并把它作为参数传入到build()方法中,并返回一个defaultSQLSessionFactory。我们再调用openSession()方法,来获取SqlSession,在构建SqlSession的同时还需要transaction和executor用于后续执行操作。