MyBatis与SpringBoot的集成配置主要通过MyBatis-Spring-Boot-Starter实现,它主要自动化了2部分功能:SqlSessionTemplate
、SqlSessionFactory
的bean实例构建,mapper接口的bean实例构建。其中,SqlSessionFactory
的构建过程依赖DataSourceBean
,且会读取mybatis.mapper-locations
来加载***Mapper.xml
的配置文件。
mapper类型的bean创建过程又可以分为2种方式:
通过配置
@SpringBootApplication
+@Mapper
的方式,该方式依赖sqlSessionFactoryBean
不存在实例,且@SpringBootApplication
的scanBasePackages
配置不会被MyBatis扫描,它只会扫描@SpringBootApplication
所在类路径,比如下面的代码就只会扫描com.luobobai.test
路径下的@Mapper
,所以,如果@SpringBootApplication
的包路径与@Mapper
的包路径存在较大差异的时候,会导致对应的Mapper
实例不存在
package com.luobobai.test;
@SpringBootApplication
public class TestApplication {
...
}
通过配置
@MapperScan
的方式,这种方式将更加的灵活,它也可以通过markerInterface
和annotationClass
属性设置标记接口或注解类;从 2.0.4 起,如果basePackageClasses
或basePackages
没有定义, 扫描将基于声明这个注解的类所在的包