真正掌握一个框架源码分析是少不了的~
在讲解整合Spring的原理之前理解原生的MyBatis执行原理是非常有必要的

MyBatis工作流程简述

传统工作模式:

  1. public static void main(String[] args) {
  2. InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  3. SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
  4. SqlSession sqlSession = factory.openSession();
  5. String name = "tom";
  6. List<User> list = sqlSession.selectList("com.demo.mapper.UserMapper.getUserByName"
  7. ,params);
  8. }

创建SqlSessionFactoryBuilder对象,调用build(inputstream)方法读取并解析配置文件,返回SqlSessionFactory对象
由SqlSessionFactory创建SqlSession 对象,没有手动设置的话事务默认开启
调用SqlSession中的api,传入Statement Id和参数,内部进行复杂的处理,最后调用jdbc执行SQL语句,封装结果返回。

使用Mapper接口:
由于面向接口编程的趋势,MyBatis也实现了通过接口调用mapper配置文件中的SQL语句

  1. public static void main(String[] args) {
  2. //前三步都相同
  3. InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  4. SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
  5. SqlSession sqlSession = factory.openSession();
  6. //这里不再调用SqlSession 的api,而是获得了接口对象,调用接口中的方法。
  7. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
  8. List<User> list = mapper.getUserByName("tom");
  9. }
  1. <br /> [Mybatis原理分析(通俗易懂)](https://blog.csdn.net/weixin_43184769/article/details/91126687)