springboot中使用mybatis-plus
阅读数:182 评论数:0
跳转到新版页面分类
python/Java
正文
MyBatis Plus官方文档
一、依赖
MyBatis-Plus 3.0基于JDK8。
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>undefined</version>
</dependency>
二、配置
springboot配置MapperScan
@SpringBootApplication
@MapperScan("com.baomidou.mybatisplus.samples.quickstart.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
1、基本配置
mybatis-plus:
......
configuration:
......
global-config:
......
db-config:
......
(1)configLocation
类型:String
默认值 : null
Mybatis配置文件位置,如果有单独的Mybatis配置,将路径配置到configLocation。
Mybatis配置可以参考:Mybatis官方文档
(2)mapperLocations
类型:String[]
默认值:["classpath*:/mapper/**/*.xml"]
MyBatis Mapper所对应的XML文件位置,如果你在Mapper中有自定义的方法(XML中有自定义实现),需要进行该配置,告诉Mapper所对应的XML文件位置。
Maven多模块项目的扫描路径需以classpath*:开头(即加载多个jar包下的XML文件)
(3)typeAliasesPackage
类型:String
默认值: null
通过该属性可以给包中的类注册别名,注册后在Mapper对应的XML文件中可以直接使用类名,而不用使用全限定的类名(即XML中调用的时候不用包含包名)。
(4)typeAliasesSuperType
类型:Class<?>
默认值: null
需与typeAliasesPackage一起使用,如果配置了该属性,则仅仅会扫描路径下以该类作为父类的域对象。
(5)typeHandlersPackage
类型:String
默认值: null
如果配置了该属性,SqlSessionFactoryBean会把该包下面的类注册为对应的TypeHandler,TypeHandler通常用于自定义类型转换。
(6)typeEnumsPackage
类型:String
默认值: null
如果配置了该属性,会将路径下的枚举类进行注入,让实体类字段能够简单快捷的使用枚举属性。
(7)checkConfigLocation
类型:boolean
默认值:false
启动时是否检查MyBatis XML文件的存在。
(8)executorType
通过该属性可指定MyBatis的执行器,MyBatis的执行器总共有三种,默认simple:
ExecutorType.SIMPLE:该执行器类型不做特殊的事情,为每个语句的执行创建一个新的预处理语句(PreparedStatement)。
ExecutorType.REUSE:该执行器类型会复用预处理语句。
ExecutorType.BATCH:该执行器类型会批量执行所有的更新语句。
(9)configurationProperties
类型:Properties
默认值:null
指定外部化MyBatis Properties配置,默认该配置可以抽离配置,实现不同环境的配置部署。
(10)configuration
类型:Configuration
默认值:null
原生MyBatis所支持的配置。
(11)globalConfig
类型:com.baomidou.mybatisplus.core.config.GlobalConfig
默认值:GlobalConfig::new
Mybatis-plus全局配置。
2、Configuration
本部分的配置大都为Mybatis原生支持的配置,这意味着可以通过MyBatis XML配置文件的形式进行配置。
(1)mapUnderscoreToCamelCase
类型:boolean
默认值:true
是否开启自动驼峰命名规则映射,即A_COLUMN到aColumn的映射。
此属性在Mybatis中默认为false,同时如果你的数据库命名符合此规则,则无需使用@TableField注解指定数据为字段名。
(2)defaultEnumTypeHandler
类型:Class<? extends TypeHandler>
默认值:org.apache.ibatis.type.EnumTypeHandler
org.apache.ibatis.type.EnumTypeHandler存储枚举的名称。
org.apach.ibatis.type.EnumOrdinalTypeHandler存储枚举的索引。
com.baomidou.mybatisplus.extension.handlers.MybatisEnumTypeHandler 枚举类需要实现IEnum接口或字段标记@EnumValue注解。
(3)aggressiveLazyLoading
类型:boolean
默认值:true
当设置为true的时候,懒加载的对象可能被任何懒属性全部加载,否则,每个属性都按属加载,需要和lazyLoadingEnabled一起使用。
(4)autoMappingBehavior
指定Mybatis如何自动映射数据库字段和对象的属性,默认partial。
AutoMappingBehavior.NONE 不启动自动映射。
AutoMappingBehavior.PARTIAL 只对非嵌套的resultMap进行自动映射
AutoMappingBehavior.FULL 对所有的resultMap都进行自动映射。
(5)autoMappingUnknownColumnBehavior
指定自动映射过程中遇到未知列或者未知属性时如何处理。
AutoMappingUnknownColumnBehavior.NONE 不做处理(默认值 )
AutoMappingUnknownColumnBehavior.WARNING 以日志的形式打印相关警告信息。
AutoMappingUnknownColumnBehavior.FAILING 当映射失败处理,并抛出异常和详细信息。
(6)localCacheScope
类型:String
默认值:SESSION
Mybatis一级缓存,默认为SESSION。
SESSION:同一个session相同查询语句不会再次查询数据库。
STATEMENT:关闭一级缓存。
单服务架构中,一级缓存开启不会影响业务,只会提高性能。微服务架构中需要关闭一级缓存,原因:Service1先查询数据,若之后Service2修改了数据,之后Service1又再次以同样的查询条件查询数据,因走缓存会出现查到的数据不是最新数据。
(7)cacheEnabled
类型:boolean
默认值:true
开启Mybatis二级缓存。
(8)callSettersOnNulls
类型:boolean
默认值: false
Mybatis在使用映射查询结果中的列,如果查询结果中包含空值的列,则Mybatis在映射的时候,不会映射这个字段,这就导致在调用该字段的时候由于没有映射,取不到而报空指针异常。
(9)configurationFactory
类型:Class<?>
默认值:null
指定一个提供Configuration实例的工厂类。该工厂生产的实例将用来加载已经被反序列对象的懒加载属性值,其必须包含一个签名方法static Configuration getConfiguration()。
3、GlobalConfig
(1)banner
类型:boolean
默认值:true
控制台是否输出mybatis-plus的logo
(2)enableSqlRunner
类型:boolean
默认值:false
是否初始化SqlRunner
(3)sqlInjector
SQL注入器(starter下支持@bean注入)
(4)superMapperClass
类型:Class
默认值:com.baomidou.mybatisplus.core.mapper.Mapper.class
通用Mapper父类(影响sqlInjector,只有这个类的子类的mapper才会注入sqlInjector内的method)
(5)metaObjectHandler
元对象字段填充控制器。
(6)identifierGenerator
Id生成器
(7)dbConfig
MyBatis-Plus全局策略中的DB策略配置。
4、DbConfig
(1)idType
全局默认主键类型。
(2)tablePrefix
类型:String
默认值: null
表名前缀。
(3)schema
(4)columnFormat
类型:String
默认值: null
字段format,例 %s(对主键无效)
(5)propertyFormat
entity的字段的format,只有在column as property这种情况下生效。
(6)tableUnderline
表名是否使用驼峰转下划线命名,只对表名生效。默认true,
(7)capitalModel
大写命名,对表名和字段名均生效,默认false。
(8)keyGenerator
表主键生成器。
(9)logicDeleteField
类型:String
默认值:null
全局的entity的逻辑删除字段属性名。
(10)logicDeleteValue
类型:String
默认值:1
逻辑已删除值。
(11)logicNotDeleteValue
类型:String
默认值:0
逻辑未删除值。
(12)InsertStrategy
类型:com.baomidou.mybatisplus.annotation.FieldStrategy
默认值:NOT_NULL
在insert的时候的字段验证策略。
(13)updateStrategy
类型:com.baomidou.mybatisplus.annotation.FieldStrategy
默认值:NOT_NULL
在update的时候的字段验证策略。
(14)selectStrategy
类型:com.baomidou.mybatisplus.annotation.FieldStrategy
默认值:NOT_NULL
select时,wrapper根据内部entity生成的where条件。