MyBatis提供了MyBatis-Spring-Boot-Starter项目用于MyBatis与SpringBoot的整合。充分利用了SpringBoot自动配置的优点,使用起来非常方便。我们来看一下简单的使用:
MyBatis-Spring-Boot-Starter的简单使用
首先引入MyBatis-Spring-Boot-Starter的包,以maven为例:
1 | <dependency> |
接着在application.yml文件中加入mybatis相关的配置:
1 | spring: |
经过以上两步,我们就配置好了Mybatis,然后就可以正常使用Mybatis了:加入UserMapper.
、UserMapper.xml
,在UserService
中注入UserMapper
。
MyBatis-Spring-Boot-Starter的探究
经过SpringBoot自动配置探究的分析
,我们知道了SpringBoot自动配置的原理。根据其原理我们来探究一下MyBatis-Spring-Boot-Starter是如何工作的。
首先我们看到,mybatis-spring-boot-starter的pom文件引入了5个包,分别是:spring-boot-starter, spring-boot-starter-jdbc, mybatis-spring-boot-autoconfigure, mybatis, mybatis-spring。
mybatis-spring-boot-autoconfigure是自动配置的关键,查看它底下的文件,看到了META-INF/spring.factories
,其中定义了EnableAutoConfiguration
,为org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
。
MybatisAutoConfiguration
这个类实际上代替了我们在Mybatis-Spring中Config类中的各种配置。查看其代码我们发现似曾相识。
它首先通过@EnableConfigurationProperties(MybatisProperties.class)
注解注入了我们在application.yml
文件中定义的Mybatis的各种配置。
然后定义了SqlSessionFactory
, SqlSessionTemplate
以及一个名为AutoConfiguredMapperScannerRegistrar
的类,这个类继承了ImportBeanDefinitionRegistrar
,在registerBeanDefinitions
方法中扫描并注册各个Mapper类的BeanDefinition。