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没有定义, 扫描将基于声明这个注解的类所在的包