一、简略说明springboot与mybatis的集成
1.springboot核心就是自动加载配置,主要是通过@EnableAutoConfiguration注解

EnableAutoConfiguration主要是通过AutoConfigurationImportSelector来加载,通过反射加载spring.factories中指定的java类。
Mybatis引入的自动配置jar包,spring.factories里配置的是MybatisAutoConfiguration类,则springboot启动时,会自动加载MybatisAutoConfiguration,初始化时,会加载mybatis的配置文件,创建sqlSessionFactory等

二、mybatis执行过程分析
首选上一段代码,执行整个过程,加载mybatis配置文件,创建sqlSessionFactory等,获取mapper的代理类,以及执行对应的方法

try {
      //读取配置文件
      Reader reader = Resources.getResourceAsReader("com/mat/example/resource/mybatis-config.xml");
      //根据mybatis-config配置文件,生成对应的sqlSessionFactory
      SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
      //通过sessionFactory创建sqlSession,每次操作数据库都是一个sqlSession
      SqlSession sqlSession = sessionFactory.openSession();
      //获取UserMapper的代理类,代理类里面包括userMapper.xml的所有方法,其本质就是创建jdbc连接执行sql,返回数据
      UserMapper mapper = sqlSession.getMapper(UserMapper.class);
      //执行对应的方法
      User user = mapper.getUser(1);
      System.out.println(user.getUsername());
    } catch (IOException e) {
      e.printStackTrace();
    }

上面就是mybatis执行的整个过程:
image

三、mybatis代码加载执行过程分析
核心就是创建SqlSessionFactory过程,该类有个内部类Configuration,mybatis所有的配置以及mapper.xml文件的配置信息,都会在Configuration里面存着,所有的一切都是为了创建Configuration
下面咱们来一步一步分析,里面有什么东西


Matforever
1 声望0 粉丝

技术没有捷径 实践出真理