一、简略阐明 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 执行的整个过程:
三、mybatis 代码加载执行过程剖析
外围就是创立 SqlSessionFactory 过程,该类有个外部类 Configuration,mybatis 所有的配置以及 mapper.xml 文件的配置信息,都会在 Configuration 外面存着,所有的一切都是为了创立 Configuration
上面咱们来一步一步剖析,外面有什么货色