MyBatis-Spring-Boot-Starter 介绍
1、MyBatis-Spring-Boot-Starter 简介
MyBatis-Spring-Boot-Starter类似一个中间件,链接Spring Boot和MyBatis,构建基于Spring Boot的MyBatis应用程序。
MyBatis-Spring-Boot-Starter 当前版本是 2.1.2,发布于2020年3月10日
MyBatis-Spring-Boot-Starter是个集成包,因此对MyBatis、MyBatis-Spring和SpringBoot的jar包都存在依赖,如下所示:
MyBatis-Spring-Boot-Starter | MyBatis-Spring | Spring Boot | Java |
---|---|---|---|
2.1 | 2.0 (need 2.0.2+ for enable all features) | 2.1 or higher | 8 or higher |
1.3 | 1.3 | 1.5 | 6 or higher |
2、MyBatis-Spring-Boot-Starter 安装
2.1、Maven 安装如下:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
2.2、Gradle 安装如下:
dependencies {
compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.1")
}
3、MyBatis-Spring-Boot-Starter 快速上手
众所周知,MyBatis的核心有两大组件:SqlSessionFactory 和 Mapper 接口。前者表示数据库链接,后者表示SQL映射。当我们基于Spring使用MyBatis的时候,也要保证在Spring环境中能存在着两大组件。
MyBatis-Spring-Boot-Starter 将会完成以下功能:
1、Autodetect an existing DataSource
自动发现存在的DataSource
2、Will create and register an instance of a SqlSessionFactory passing that DataSource as an input using the SqlSessionFactoryBean
利用SqlSessionFactoryBean创建并注册SqlSessionFactory
3、Will create and register an instance of a SqlSessionTemplate got out of the SqlSessionFactory
创建并注册SqlSessionTemplate
4、Auto-scan your mappers, link them to the SqlSessionTemplate and register them to Spring context so they can be injected into your beans
自动扫描Mappers,并注册到Spring上下文环境方便程序的注入使用
假设,我们有如下Mapper:
@Mapper
public interface CityMapper {
@Select("SELECT * FROM CITY WHERE state = #{state}")
City findByState(@Param("state") String state);
}
你仅仅需要创建一个Spring Boot程序让Mapper注入即可:
@SpringBootApplication
public class SampleMybatisApplication implements CommandLineRunner {
private final CityMapper cityMapper;
public SampleMybatisApplication(CityMapper cityMapper) {
this.cityMapper = cityMapper;
}
public static void main(String[] args) {
SpringApplication.run(SampleMybatisApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
System.out.println(this.cityMapper.findByState("CA"));
}
}
仅此而已,如上程序就是一个Spring Boot程序。
4、高级扫描
默认情况下,MyBatis-Spring-Boot-Starter会查找以@Mapper注解标记的映射器。
你需要给每个MyBatis映射器标识上@Mapper注解,但是这样非常的麻烦,这时可以使用@MapperScan注解来扫描包。
备注:关于@MapperScan注解更多的介绍,请移步这里:http://www.mybatis.cn/archives/862.html
需要提醒的是:如果MyBatis Spring Boot Starter在Spring的上下文中至少找到一个MapperFactoryBean,那么它将不会启动扫描过程,因此如果你想停止扫描,那么应该使用@Bean方法显式注册映射器。