本文讲解了MyBatis-Plus在使用过程中的配置选项,其中,部分配置继承自MyBatis原生所支持的配置

基本配置

本部分配置包含了大部分用户的常用配置,其中一部分为 MyBatis 原生所支持的配置

使用方式

Spring Boot:

mybatis-plus:
......
configuration:
  ......
global-config:
  ......
  db-config:
    ......  

Spring MVC:

<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
  <property name="configuration" ref="configuration"/> <!-- 非必须 -->
  <property name="globalConfig" ref="globalConfig"/> <!-- 非必须 -->
  ......
</bean>

<bean id="configuration" class="com.baomidou.mybatisplus.core.MybatisConfiguration">
  ......
</bean>

<bean id="globalConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig">
  <property name="dbConfig" ref="dbConfig"/> <!-- 非必须 -->
  ......
</bean>

<bean id="dbConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig.DbConfig">
  ......
</bean>

configLocation

  • 类型:String

  • 默认值:null

MyBatis 配置文件位置,如果您有单独的 MyBatis 配置,请将其路径配置到 configLocation 中.MyBatis Configuration 的具体内容请参考MyBatis 官方文档

mapperLocations

  • 类型:String[]

  • 默认值:[]

MyBatis Mapper 所对应的 XML 文件位置,如果您在 Mapper 中有自定义方法(XML 中有自定义实现),需要进行该配置,告诉 Mapper 所对应的 XML 文件位置

warning Maven 多模块项目的扫描路径需以 classpath*: 开头 (即加载多个 jar 包下的 XML 文件)

typeAliasesPackage

  • 类型:String

  • 默认值:null

MyBaits 别名包扫描路径,通过该属性可以给包中的类注册别名,注册后在 Mapper 对应的 XML 文件中可以直接使用类名,而不用使用全限定的类名(即 XML 中调用的时候不用包含包名)

typeAliasesSuperType

  • 类型:Class

  • 默认值:null

该配置请和 typeAliasesPackage 一起使用,如果配置了该属性,则仅仅会扫描路径下以该类作为父类的域对象

typeHandlersPackage

  • 类型:String

  • 默认值:null

TypeHandler 扫描路径,如果配置了该属性,SqlSessionFactoryBean 会把该包下面的类注册为对应的 TypeHandler

tip TypeHandler 通常用于自定义类型转换。

typeEnumsPackage

  • 类型:String

  • 默认值:null

枚举类 扫描路径,如果配置了该属性,会将路径下的枚举类进行注入,让实体类字段能够简单快捷的使用枚举属性

checkConfigLocation

  • 类型:boolean

  • 默认值:false

启动时是否检查 MyBatis XML 文件的存在,默认不检查

executorType

  • 类型:ExecutorType

  • 默认值:simple

通过该属性可指定 MyBatis 的执行器,MyBatis 的执行器总共有三种:

  • ExecutorType.SIMPLE:该执行器类型不做特殊的事情,为每个语句的执行创建一个新的预处理语句(PreparedStatement)

  • ExecutorType.REUSE:该执行器类型会复用预处理语句(PreparedStatement)

  • ExecutorType.BATCH:该执行器类型会批量执行所有的更新语句

configurationProperties

  • 类型:Properties

  • 默认值:null

指定外部化 MyBatis Properties 配置,通过该配置可以抽离配置,实现不同环境的配置部署

configuration

  • 类型:Configuration

  • 默认值:null

原生 MyBatis 所支持的配置,具体请查看 Configuration

globalConfig

  • 类型:GlobalConfig

  • 默认值:null

MyBatis-Plus 全局策略配置,具体请查看 GlobalConfig

Configuration

本部分(Configuration)的配置大都为 MyBatis 原生支持的配置,这意味着您可以通过 MyBatis XML 配置文件的形式进行配置。

mapUnderscoreToCamelCase

  • 类型:boolean

  • 默认值:true

是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN(下划线命名) 到经典 Java 属性名 aColumn(驼峰命名) 的类似映射。

tip 注意 此属性在 MyBatis 中原默认值为 false,在 MyBatis-Plus 中,此属性也将用于生成最终的 SQL 的 select body

如果您的数据库命名符合规则无需使用 @TableField 注解指定数据库字段名

defaultEnumTypeHandler

  • 类型:`Class

  • 默认值:org.apache.ibatis.type.EnumTypeHandler

默认枚举处理类,如果配置了该属性,枚举将统一使用指定处理器进行处理

tip

  • org.apache.ibatis.type.EnumTypeHandler : 存储枚举的名称

  • org.apache.ibatis.type.EnumOrdinalTypeHandler : 存储枚举的索引

  • com.baomidou.mybatisplus.extension.handlers.EnumTypeHandler : 枚举类需要实现IEnum接口或字段标记@EnumValue注解.

  • com.baomidou.mybatisplus.extension.handlers.EnumAnnotationTypeHandler: 枚举类字段需要标记@EnumValue注解

aggressiveLazyLoading

  • 类型:boolean

  • 默认值:true

当设置为 true 的时候,懒加载的对象可能被任何懒属性全部加载,否则,每个属性都按需加载。需要和 lazyLoadingEnabled 一起使用。

autoMappingBehavior

  • 类型:AutoMappingBehavior

  • 默认值:partial

MyBatis 自动映射策略,通过该配置可指定 MyBatis 是否并且如何来自动映射数据表字段与对象的属性,总共有 3 种可选值:

  • AutoMappingBehavior.NONE:不启用自动映射

  • AutoMappingBehavior.PARTIAL:只对非嵌套的 resultMap 进行自动映射

  • AutoMappingBehavior.FULL:对所有的 resultMap 都进行自动映射

autoMappingUnknownColumnBehavior

  • 类型:AutoMappingUnknownColumnBehavior

  • 默认值:NONE

MyBatis 自动映射时未知列或未知属性处理策略,通过该配置可指定 MyBatis 在自动映射过程中遇到未知列或者未知属性时如何处理,总共有 3 种可选值:

  • AutoMappingUnknownColumnBehavior.NONE:不做任何处理 (默认值)

  • AutoMappingUnknownColumnBehavior.WARNING:以日志的形式打印相关警告信息

  • AutoMappingUnknownColumnBehavior.FAILING:当作映射失败处理,并抛出异常和详细信息

cacheEnabled

  • 类型:boolean

  • 默认值:true

全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存,默认为 true。

callSettersOnNulls

  • 类型:boolean

  • 默认值:false

指定当结果集中值为 null 的时候是否调用映射对象的 Setter(Map 对象时为 put)方法,通常运用于有 Map.keySet() 依赖或 null 值初始化的情况。

通俗的讲,即 MyBatis 在使用 resultMap 来映射查询结果中的列,如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段,这就导致在调用到该字段的时候由于没有映射,取不到而报空指针异常。

当您遇到类似的情况,请针对该属性进行相关配置以解决以上问题。

warning 基本类型(int、boolean 等)是不能设置成 null 的。

configurationFactory

  • 类型:Class

  • 默认值:null

指定一个提供 Configuration 实例的工厂类。该工厂生产的实例将用来加载已经被反序列化对象的懒加载属性值,其必须包含一个签名方法static Configuration getConfiguration()。(从 3.2.3 版本开始)

GlobalConfig

banner

  • 类型:boolean

  • 默认值:true

是否控制台 print mybatis-plus 的 LOGO

sqlParserCache(Deprecated 3.1.1,直接开启缓存)

  • 类型:boolean

  • 默认值:false

是否缓存 Sql 解析,默认不缓存

workerId

  • 类型:Long

  • 默认值:null

机器 ID 部分(影响雪花ID)

datacenterId

  • 类型:Long

  • 默认值:null

数据标识 ID 部分(影响雪花ID)(workerId 和 datacenterId 一起配置才能重新初始化 Sequence)

enableSqlRunner

  • 类型:boolean

  • 默认值:false

是否初始化 SqlRunner(com.baomidou.mybatisplus.extension.toolkit.SqlRunner)

sqlInjector

  • 类型:com.baomidou.mybatisplus.core.injector.ISqlInjector

  • 默认值:com.baomidou.mybatisplus.core.injector.DefaultSqlInjector

SQL注入器(starter 下支持@bean注入)

superMapperClass

  • 类型:Class

  • 默认值:com.baomidou.mybatisplus.core.mapper.Mapper.class

通用Mapper父类(影响sqlInjector,只有这个的子类的 mapper 才会注入 sqlInjector 内的 method)

metaObjectHandler

  • 类型:com.baomidou.mybatisplus.core.handlers.MetaObjectHandler

  • 默认值:null

元对象字段填充控制器(starter 下支持@bean注入)

dbConfig

  • 类型:com.baomidou.mybatisplus.annotation.DbConfig

  • 默认值:null

MyBatis-Plus 全局策略中的 DB 策略配置,具体请查看 DbConfig

DbConfig

dbType(Deprecated 3.1.1,这个属性没什么用)

  • 类型:com.baomidou.mybatisplus.annotation.DbType

  • 默认值:OTHER

数据库类型,默认值为未知的数据库类型 如果值为OTHER,启动时会根据数据库连接 url 获取数据库类型;如果不是OTHER则不会自动获取数据库类型

idType

  • 类型:com.baomidou.mybatisplus.annotation.IdType

  • 默认值:ID_WORKER

全局默认主键类型

tablePrefix

  • 类型:String

  • 默认值:null

表名前缀

schema(since 3.1.1)

  • 类型:String

  • 默认值:null

schema

columnFormat(since 3.1.1)

  • 类型:String

  • 默认值:null

字段 format(since 3.1.1),例: %s,(对主键无效)

tableUnderline

  • 类型:boolean

  • 默认值:true

表名、是否使用下划线命名,默认数据库表使用下划线命名

columnLike(Deprecated 3.1.1)

  • 类型:boolean

  • 默认值:false

是否开启 LIKE 查询,即根据 entity 自动生成的 where 条件中 String 类型字段 是否使用 LIKE,默认不开启

capitalMode

  • 类型:boolean

  • 默认值:false

是否开启大写命名,默认不开启

keyGenerator

  • 类型:com.baomidou.mybatisplus.core.incrementer.IKeyGenerator

  • 默认值:null

表主键生成器(starter 下支持@bean注入)

logicDeleteValue

  • 类型:String

  • 默认值:1

逻辑已删除值,(逻辑删除下有效)

logicNotDeleteValue

  • 类型:String

  • 默认值:0

逻辑未删除值,(逻辑删除下有效)

fieldStrategy(Deprecated 3.1.2,将用下面三个新的取代)

  • 类型:com.baomidou.mybatisplus.annotation.FieldStrategy

  • 默认值:NOT_NULL

字段验证策略

tip 说明: 该策略约定了如何产出注入的sql,涉及insert,update以及wrapper内部的entity属性生成的 where 条件

insertStrategy(since 3.1.2)

  • 类型:com.baomidou.mybatisplus.annotation.FieldStrategy

  • 默认值:NOT_NULL

字段验证策略之 insert

tip 说明: 在 insert 的时候的字段验证策略 目前没有默认值,等 {@link #fieldStrategy} 完全去除掉,会给个默认值 NOT_NULL 没配则按 {@link #fieldStrategy} 为准

updateStrategy(since 3.1.2)

  • 类型:com.baomidou.mybatisplus.annotation.FieldStrategy

  • 默认值:NOT_NULL

字段验证策略之 update

tip 说明: 在 update 的时候的字段验证策略 目前没有默认值,等 {@link #fieldStrategy} 完全去除掉,会给个默认值 NOT_NULL 没配则按 {@link #fieldStrategy} 为准

selectStrategy(since 3.1.2)

  • 类型:com.baomidou.mybatisplus.annotation.FieldStrategy

  • 默认值:NOT_NULL

字段验证策略之 select

tip 说明: 在 select 的时候的字段验证策略: wrapper 根据内部 entity 生成的 where 条件 目前没有默认值,等 {@link #fieldStrategy} 完全去除掉,会给个默认值 NOT_NULL 没配则按 {@link #fieldStrategy} 为准

MybatisPlus3.X使用配置的更多相关文章

  1. springboot2、mybatis-plus3 一行配置实现打印sql最终填充的参数值

    在application.yml中添加: # 配置slq打印日志 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.st ...

  2. SpringBoot2.0+Mybatis-Plus3.0+Druid1.1.10 一站式整合

    SpringBoot2.0+Mybatis-Plus3.0+Druid1.1.10 一站式整合 一.先快速创建一个springboot项目,其中pom.xml加入mybatis-plus 和druid ...

  3. Mybatis-Plus3.0入门手册

    Mybatis-Plus3.0入门手册   ref: https://blog.csdn.net/moshowgame/article/details/81008485 Mybatis-Plus简介 ...

  4. SpringBoot + MybatisPlus3.x 代码生成

    主要参考另外两篇博文,这里表示感谢 参考一(mybatisplus3.x分页) : https://www.jianshu.com/p/2ec9337dc2b0 参考二(mybatisplus2.x升 ...

  5. Mybatis逆向工程和新版本MybatisPlus3.4逆向工程的使用

    Mybatis和MybatisPlus3.4的使用 目录 Mybatis和MybatisPlus3.4的使用 1 RESTFUL 2 逆向工程 2.1 tkMybatis逆向工程 2.1.1 导入依赖 ...

  6. 配置android sdk 环境

    1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/

  7. Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记

    以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...

  8. react-router 组件式配置与对象式配置小区别

    1. react-router 对象式配置 和 组件式配置    组件式配置(Redirect) ----对应---- 对象式配置(onEnter钩子) IndexRedirect -----对应-- ...

  9. 总结:Mac前端开发环境的搭建(配置)

    新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...

随机推荐

  1. 重学JavaScript之面向对象的程序设计(继承)

    1. 继承 ES 中只支持实现继承,而且其实现继承主要依靠原型链来实现的. 2. 原型链 ES中 描述了 原型链的概念,并将原型链作为实现继承的主要方法.其基本思想是利用原型让一个引用类型继承另一个引 ...

  2. Android导入Burp Suite证书抓包HTTPS

    需求 Android APP安全测试时,主要工作分为: APK安全 业务安全 APK安全这里不讨论,我说说业务安全,因为大部分的业务校验逻辑还是放在Servier端,这里就会涉及到网络通信了.因此网络 ...

  3. FastDfs之TrackerServer的详细配置介绍

    # is this config file disabled # false for enabled # true for disabled disabled=false #当前配置是否不可用fals ...

  4. HTML学习之轮播图

    这可以说是一种非常简单的实现轮播图的方法了,由于时间仓促所以没写自动轮播部分.简单说一下原理吧,就是把所有图片堆叠在一个盒子里,设置所有图片的透明度为0,这样就把所有图片都隐藏了,第一张图片除外(第一 ...

  5. redis服务打不开--解决办法

    D:\>redis-server[11896] 04 Dec 19:20:05.122 # Warning: no config file specified, using the defaul ...

  6. MongoDB 学习笔记之 mongo-connector安装

    mongo-connector安装: https://github.com/mongodb-labs/mongo-connector 1. yum -y install openssl* 2.编译安装 ...

  7. 通过搭建MySQL掌握k8s(Kubernetes)重要概念(下):参数配置

    本文通过搭建MySQL环境来了解k8s的重要概念,包括持久卷,网络和参数配置.这是下篇,专门讲解参数配置.如果你有些地方不能完全看明白,请先看上篇"通过搭建MySQL掌握k8s(Kubern ...

  8. jsp JavaBean el表达式

    JSP三大指令 一个jsp页面中,可以有0~N个指令的定义! 1. page --> 最复杂:<%@page language="java" info="xx ...

  9. nextjs:如何将静态资源发布到 CDN

    nextjs 是基于 react 的服务端同构指出框架,在使用的过程中也多多少少遇到过几个问题,其中最大的问题就是静态资源的发布了. 1. 如何基于文件内容进行 hash 命名 Next.js use ...

  10. Jenkins项目构建

    一:新建项目 (1)点击新建,输入项目名称--构建一个自由风格的软件项目,点击ok (2)创建项目名称,选择节点标签 (3)构建触发器-----设置每两分钟执行一次 其中有5个参数 (*****) 第 ...