一、版本
随着Spring Boot越来越流行,各类框架也开始提供了支持的自动配置启动器,MyBatis也不例外。
当前mybatis-spring-boot-starter最新版本为1.3.2。查看最新版本
通过查阅POM文件可以知道其主要依赖版本为:
<mybatis.version>3.4.6</mybatis.version>
<mybatis-spring.version>1.3.2</mybatis-spring.version>
<spring-boot.version>1.5.10.RELEASE</spring-boot.version>
在使用时,可以依据实际情况升级启动器版本,或覆盖其依赖组件版本,一般情况下启动器中提供了较为稳定的版本。
二、使用
通过Maven或Gradle导入依赖后,通过查阅自动配置指南正确使用启动器
maven
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
gradle
dependencies {
compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2")
}
配置
1、配置文件,设置相关配置属性名和值,如果需要了解详细,也可以查阅mybatis-spring-boot-autoconfigure中的MybatisProperties配置属性类和Configuration嵌套配置属性类,在org.mybatis.spring.boot.autoconfigure包之下
# MyBatis 配置属性
## MyBatis xml 配置文件位置
## mybatis.config-location=classpath:mybatis-config.xml
## Mapper xml 配置文件位置
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
## 用于搜索类型别名的包。(包名分隔符为,)
mybatis.type-aliases-package=com.example.boot.dao.entity
## 用于搜索类型处理程序的包。(包名分隔符为,)
mybatis.type-handlers-package=com.example.boot.typehandler
## 表明是否检查 Mybatis xml 配置文件位置
mybatis.check-config-location=false
## org.mybatis.spring.SqlSessionTemplate的执行模式 SIMPLE/REUSE/BATCH
mybatis.executor-type=SIMPLE
# Mybatis 嵌套属性
## 允许在嵌套语句中使用分页(RowBounds)
mybatis.configuration.safe-row-bounds-enabled=false
## 允许在嵌套语句中使用分页(ResultHandler),默认true
mybatis.configuration.safe-result-handler-enabled=true
## 是否开启自动驼峰命名规则映射
mybatis.configuration.map-underscore-to-camel-case=false
## 当开启时,任何方法的调用都会加载该对象的所有属性,禁用时,每个属性会按需加载(加载字段由SQL指定),以提高性能
mybatis.configuration.aggressive-lazy-loading=false
## 是否允许单一语句返回多结果集(需要兼容驱动),默认true
mybatis.configuration.multiple-result-sets-enabled=true
## 允许 JDBC 支持自动生成主键,需要驱动兼容。
## 如果设置为 true 则这个设置强制使用自动生成主键,尽管一些驱动不能兼容但仍可正常工作(比如 Derby)
mybatis.configuration.use-generated-keys=false
## 使用列标签代替列名
mybatis.configuration.use-column-label=true
## 全局映射器缓存开关
mybatis.configuration.cache-enabled=true
## 指定当结果集中值为 null 的时候是否调用映射对象的 setter(map 对象时为 put)方法,
## 这对于有 Map.keySet() 依赖或 null 值初始化的时候是有用的。注意基本类型(int、boolean等)是不能设置成 null 的
mybatis.configuration.call-setters-on-nulls=false
## 允许使用方法签名中的名称作为语句参数名称。
## 为了使用该特性,你的工程必须采用Java 8+编译,并且加上-parameters选项
mybatis.configuration.use-actual-param-name=true
## 当返回行的所有列都是空时,MyBatis默认返回null,适用于嵌套的结果集
mybatis.configuration.return-instance-for-empty-row=false
## 延迟加载的全局开关,查询时,关闭关联对象即时加载以提高性能
mybatis.configuration.lazy-loading-enabled=false
## 设置超时时间,它决定驱动等待数据库响应的秒数
mybatis.configuration.default-statement-timeout=5
## 为驱动的结果集获取数量(fetchSize)设置一个提示值
mybatis.configuration.default-fetch-size=10
## 对于批量更新操作缓存SQL以提高性能,默认SIMPLE
mybatis.configuration.default-executor-type=REUSE
2、Java Config
启动器提供了另一种通过Java Config自定义自动配置的可能。实现ConfigurationCustomizer接口的配置类并自定义MyBatis配置。
3、启动器生效时还会检测实现了以下接口的实体: