MyBatis-Plus——超详细讲解配置文件

MyBatis-Plus------超详细讲解配置文件

目录

前言

1、mapperLocations

2、typeAliasesPackage

3、typeHandlersPackage

4、typeEnumsPackage

5、checkConfigLocation

6、executorType

7、configurationProperties

8、configuration

8.1 mapUnderscoreToCamelCase

8.2 defaultEnumTypeHandler

8.3 aggressiveLazyLoading

8.4 autoMappingBehavior

8.5 autoMappingUnknownColumnBehavior

8.6 localCacheScope

8.7 cacheEnabled

8.8 callSettersOnNulls

8.9 configurationFactory

9、MyBatis的配置属性

10、globalConfig

10.1 banner

10.2 enableSqlRunner

10.3 superMapperClass

10.4 dbConfig

10.4.1 idType

10.4.2 tablePrefix

10.4.3 schema

10.4.4 columnFormat

10.4.5 propertyFormat

10.4.6 tableUnderline

10.4.6 capitalMode

10.4.7 logicDeleteField

10.4.8 logicDeleteValue

10.4.9 logicNotDeleteValue

10.4.10 insertStrategy

10.4.11 updateStrategy

10.4.12 selectStrategy

11、 配置小结

小结

前言

在我们的【MyBatis-Plus】中有许多【配置】,也就是当我们需要用到的时候,会在配置文件中进行编写的属性,本篇博客将会讲解这些配置的【作用】,以及简单【使用】。

1、mapperLocations

类型:String[]
默认值:["classpath*:/mapper/**/*.xml"]

介绍:扫描MyBatis Mapper 所对应的 XML 文件位置,如果在 Mapper 中有自定义方法(XML 中有自定义实现),需要进行该配置,告诉 Mapper 所对应的 XML 文件位置,Maven 多模块项目的扫描路径需以 classpath*: 开头 (即加载多个 jar 包下的 XML 文件)。

mybatis-plus.mapper-locations=classpath*😗*/mapper/xml/*.xml

2、typeAliasesPackage

类型:String
默认值:null

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

mybatis-plus.type-aliases-package=com.caochenlei.mpdemo.pojo

3、typeHandlersPackage

类型:String
默认值:null

介绍:TypeHandler 扫描路径,如果配置了该属性,SqlSessionFactoryBean 会把该包下面的类注册为对应的 TypeHandler,TypeHandler 通常用于自定义类型转换。

mybatis-plus.type-handlers-package=com.caochenlei.mpdemo.type

4、typeEnumsPackage

类型:String
默认值:null

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

mybatis-plus.type-enums-package=com.caochenlei.mpdemo.myenum

5、checkConfigLocation

类型:boolean
默认值:false

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

mybatis-plus.check-config-location=false

6、executorType

类型:ExecutorType
默认值:simple

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

    ExecutorType.SIMPLE:该执行器类型不做特殊的事情,为每个语句的执行创建一个新的预处理语句(PreparedStatement)
    ExecutorType.REUSE:该执行器类型会复用预处理语句(PreparedStatement)
    ExecutorType.BATCH:该执行器类型会批量执行所有的更新语句

mybatis-plus.executor-type=simple

7、configurationProperties

类型:Properties
默认值:null

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

8、configuration

类型:Configuration
默认值:null

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

8.1 mapUnderscoreToCamelCase

类型:boolean
默认值:true

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

       此属性在 MyBatis 中原默认值为 false,在 MyBatis-Plus 中,此属性也将用于生成最终的 SQL 的 select body,如果您的数据库命名符合规则无需使用 @TableField 注解指定数据库字段名。

mybatis-plus.configuration.map-underscore-to-camel-case=true

8.2 defaultEnumTypeHandler

类型:Class<? extends TypeHandler
默认值:org.apache.ibatis.type.EnumTypeHandler

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

注意事项

其取值可以有以下几种,可以使用内置,也可以自定义:

    org.apache.ibatis.type.EnumTypeHandler : 存储枚举的名称
    org.apache.ibatis.type.EnumOrdinalTypeHandler : 存储枚举的索引
    com.baomidou.mybatisplus.extension.handlers.MybatisEnumTypeHandler : 枚举类需要实现IEnum接口或字段标记@EnumValue注解.(3.1.2以下版本为EnumTypeHandler)

mybatis-plus.configuration.default-enum-type-handler=org.apache.ibatis.type.EnumTypeHandler

8.3 aggressiveLazyLoading

类型:boolean
默认值:true

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

mybatis-plus.configuration.aggressive-lazy-loading=true
mybatis-plus.configuration.lazy-loading-enabled=true

8.4 autoMappingBehavior

类型:AutoMappingBehavior
默认值:partial

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

    AutoMappingBehavior.NONE:不启用自动映射
    AutoMappingBehavior.PARTIAL:只对非嵌套的 resultMap 进行自动映射
    AutoMappingBehavior.FULL:对所有的 resultMap 都进行自动映射

mybatis-plus.configuration.auto-mapping-behavior=partial

8.5 autoMappingUnknownColumnBehavior

类型:AutoMappingUnknownColumnBehavior
默认值:NONE

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

    AutoMappingUnknownColumnBehavior.NONE:不做任何处理 (默认值)
    AutoMappingUnknownColumnBehavior.WARNING:以日志的形式打印相关警告信息
    AutoMappingUnknownColumnBehavior.FAILING:当作映射失败处理,并抛出异常和详细信息

mybatis-plus.configuration.auto-mapping-unknown-column-behavior=none

8.6 localCacheScope

类型:String
默认值:SESSION

介绍:Mybatis一级缓存,默认为 SESSION。

    SESSION:session级别缓存,同一个session相同查询语句不会再次查询数据库
    STATEMENT:关闭一级缓存

注意事项

单服务架构中(有且仅有只有一个程序提供相同服务),一级缓存开启不会影响业务,只会提高性能。 微服务架构中需要关闭一级缓存,原因:Service1先查询数据,若之后Service2修改了数据,之后Service1又再次以同样的查询条件查询数据,因走缓存会出现查处的数据不是最新数据。

mybatis-plus.configuration.local-cache-scope=session

8.7 cacheEnabled

类型:boolean
默认值:true

介绍:开启Mybatis二级缓存,默认为 true。

mybatis-plus.configuration.cache-enabled=true

8.8 callSettersOnNulls

类型:boolean
默认值:false

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

理解

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

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

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

mybatis-plus.configuration.call-setters-on-nulls=false

8.9 configurationFactory

类型:Class<?>
默认值:null

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

mybatis-plus.configuration.configuration-factory=

9、MyBatis的配置属性

由于其属性很多,我们这里只列出MyBatis的settings的标签属性,其余可以自己进行查看。

我们这里以日志打印为例,一般使用驼峰命名对应 " - "

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

设置 描述 取值 默认值

cacheEnabled 该配置是影响所有映射器中配置缓存的全局开关。 true | false true

lazyLoadingEnabled 该配置是延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。在特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态。 true | false false

aggressiveLazyLoading 当启用时,对任意延迟属性的调用会使带有延迟加载属性的对象完整加载,反之,每种属性将会按需加载。 true | false false

(true in ≤3.4.1)

multipleResultSetsEnabled 是否允许单一语句返回多结果集,需要兼容驱动。 true | false true

useColumnLabel 使用列标签代替列名。不同的驱动会有不同的表现,具体可参考相关驱动文档或通过测试这两种不同的模式来观察所用驱动的结果。 true | false true

useGeneratedKeys 允许JDBC 支持自动生成主键,需要驱动兼容。如果设置为 true,则这个设置强制使用自动生成主键,尽管一些驱动不能兼容但仍可正常工作(比如 Derby)。 true | false false

autoMappingBehavior 指定 MyBatis 应如何自动映射列到字段或属性。

NONE:表示取消自动映射。

PARTIAL:表示只会自动映射,没有定义嵌套结果集和映射结果集。

FULL:表示会自动映射任意复杂的结果集,无论是否嵌套。 NONE

PARTIAL

FULL PARTIAL

autoMappingUnknownColumnBehavior 指定自动映射当中未知列(或未知属性类型)时的行为。 默认是不处理,只有当日志级别达到 WARN 级别或者以下,才会显示相关日志,如果处理失败会抛出 SqlSessionException异常。 NONE

WARNING

FAILING NONE

defaultExecutorType 配置默认的执行器。

SIMPLE:是普通的执行器。

REUSE:会重用预处理语句。

BATCH:执行器将重用语句并执行批量更新。 SIMPLE

REUSE

BATCH SIMPLE

defaultStatementTimeout 设置超时时间,它决定驱动等待数据库响应的秒数。 任意正整数值 Not Set (null)

defaultFetchSize 设置数据库驱动程序默认返回的条数限制,此参数可以重新设置。 任意正整数值 Not Set (null)

defaultResultSetType 指定按语句设置忽略它的滚动策略。(Since: 3.5.2) FORWARD_ONLY

SCROLL_SENSITIVE

SCROLL_INSENSITIVE

DEFAULT

(same behavior with 'Not Set') Not Set (null)

safeRowBoundsEnabled 允许在嵌套语句中使用分页(RowBounds)。

如果允许,设置 false。 true | false false

safeResultHandlerEnabled 允许在嵌套语句中使用分页(ResultHandler)。

如果允许,设置false true | false true

mapUnderscoreToCamelCaseEnables 是否开启自动驼峰命名规则映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射。 true | false false

localCacheScope MyBatis 利用本地缓存机制(Local Cache)防止循环引用(circular references)和加速关联复嵌套査询。

SESSION:这种情况下会缓存一个会话中执行的所有查询。

STATEMENT:代表本地会话仅用在语句执行上,对相同 SqlScssion 的不同调用将不会共享数据。 SESSION | STATEMENT SESSION

jdbcTypeForNull 当没有为参数提供特定的 JDBC 类型时,为空值时指定 JDBC 类型。某些驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER。 JdbcType 枚举值 OTHER

lazyLoadTriggerMethods 指定哪个对象的方法触发一次延迟加载。 一个逗号分隔的方法名称列表 equals,clone,

hashCode,toString

defaultScriptingLanguage 指定动态 SQL 生成的默认语言。 类型别名或指定类的全名称 org.apache.

ibatis.scripting.

xmltags.XMLLang

defaultEnumTypeHandler 指定默认情况下用于枚举的TypeHandler。(Since: 3.4.5) 类型别名或指定类的全名称 org.apache.

ibatis.type.

EnumTypeHandler

callSettersOnNulls 指定当结果集中值为 null 时,是否调用映射对象的 setter(map 对象时为 put)方法,这对于 Map.keySet() 依赖或 null 值初始化时是有用的。注意,基本类型(int、boolean 等)不能设置成 null。 true | false false

returnInstanceForEmptyRowMyBatis 默认情况下,MyBatis在返回行的所有列都为null时返回null。启用此设置后,MyBatis将返回空实例。注意,它也适用于嵌套结果(即collectioin和association)。(Since: 3.4.2) true | false false

logPrefix 指定 MyBatis 增加到日志名称的前缀。 任何字符串 Not set

logImpl 指定 MyBatis 所用日志的具体实现,未指定时将自动査找。 SLF4J

LOG4J

LOG4J2

JDK_LOGGING

COMMONS_LOGGING

STDOUT_LOGGING

NO_LOGGING Not set

proxyFactory 指定 MyBatis 创建具有延迟加载能力的对象所用到的代理工具。 CGLIB | JAVASSIST JAVASSIST

(MyBatis 3.3 or above)

vfsImpl 指定 VFS 的实现类。 自定义VFS实现的类的全名称,用逗号分隔。 Not set

useActualParamName 允许使用方法签名中的名称作为语句参数名称。 为了使用该特性,你的项目必须采用 Java 8 编译,并且加上 -parameters 选项。(Since: 3.4.1) true | false true

configurationFactory 指定提供配置实例的类。返回的配置实例用于加载反序列化对象的惰性属性。此类必须具有签名静态配置getConfiguration() 的方法。(Since: 3.2.3) 类型别名或指定类的全名称 Not set

shrinkWhitespacesInSql 从SQL中删除多余的空白字符。注意,这也会影响SQL中的文字字符串。(Since 3.5.5) true | false false

10、globalConfig

类型:com.baomidou.mybatisplus.core.config.GlobalConfig
默认值:GlobalConfig::new

介绍:MyBatis-Plus 全局策略配置。

10.1 banner

类型:boolean
默认值:true

介绍:是否控制台 print mybatis-plus 的 LOGO。

mybatis-plus.global-config.banner=true

10.2 enableSqlRunner

类型:boolean
默认值:false

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

mybatis-plus.global-config.enable-sql-runner=false

10.3 superMapperClass

类型:Class
默认值:com.baomidou.mybatisplus.core.mapper.Mapper.class

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

mybatis-plus.global-config.super-mapper-class=com.baomidou.mybatisplus.core.mapper.Mapper

10.4 dbConfig

类型:com.baomidou.mybatisplus.core.config.GlobalConfig$DbConfig
默认值:null

介绍:MyBatis-Plus 全局策略中的 DB 策略配置。

10.4.1 idType

类型:com.baomidou.mybatisplus.annotation.IdType
默认值:ASSIGN_ID

介绍:全局默认主键类型。

mybatis-plus.global-config.db-config.id-type=assign_id

10.4.2 tablePrefix

类型:String
默认值:null

介绍:表名前缀。

mybatis-plus.global-config.db-config.table-prefix=tbl_

10.4.3 schema

类型:String
默认值:null

mybatis-plus.global-config.db-config.schema=

10.4.4 columnFormat

类型:String
默认值:null

介绍:字段 format,例: %s,(对主键无效)

mybatis-plus.global-config.db-config.column-format=

10.4.5 propertyFormat

类型:String
默认值:null

介绍:entity 的字段(property)的 format,只有在 column as property 这种情况下生效例: %s,(对主键无效)。

mybatis-plus.global-config.db-config.property-format=

10.4.6 tableUnderline

类型:boolean
默认值:true

介绍:表名是否使用驼峰转下划线命名,只对表名生效。

mybatis-plus.global-config.db-config.table-underline=true

10.4.6 capitalMode

类型:boolean
默认值:false

介绍:大写命名,对表名和字段名均生效。

mybatis-plus.global-config.db-config.capital-mode=false

10.4.7 logicDeleteField

类型:String
默认值:null

介绍:全局的entity的逻辑删除字段属性名,(逻辑删除下有效)。

mybatis-plus.global-config.db-config.logic-delete-field=

10.4.8 logicDeleteValue

类型:String
默认值:1

介绍:逻辑已删除值,(逻辑删除下有效)。

mybatis-plus.global-config.db-config.logic-delete-value=1

10.4.9 logicNotDeleteValue

类型:String
默认值:0

介绍:逻辑未删除值,(逻辑删除下有效)。

mybatis-plus.global-config.db-config.logic-not-delete-value=0

10.4.10 insertStrategy

类型:com.baomidou.mybatisplus.annotation.FieldStrategy
默认值:NOT_NULL

介绍:字段验证策略之 insert,在 insert 的时候的字段验证策略。

mybatis-plus.global-config.db-config.insert-strategy=not_null

10.4.11 updateStrategy

类型:com.baomidou.mybatisplus.annotation.FieldStrategy
默认值:NOT_NULL

介绍:字段验证策略之 update,在 update 的时候的字段验证策略。

mybatis-plus.global-config.db-config.update-strategy=not_null

10.4.12 selectStrategy

类型:com.baomidou.mybatisplus.annotation.FieldStrategy
默认值:NOT_NULL

介绍:字段验证策略之 select,在 select 的时候的字段验证策略既 wrapper 根据内部 entity 生成的 where 条件。

mybatis-plus.global-config.db-config.select-strategy=not_null

11、 配置小结

#mybatis-plus
mybatis-plus.mapper-locations=classpath*:**/mapper/xml/*.xml
mybatis-plus.type-aliases-package=com.caochenlei.mpdemo.pojo
mybatis-plus.type-handlers-package=com.caochenlei.mpdemo.type
mybatis-plus.type-enums-package=com.caochenlei.mpdemo.enum
mybatis-plus.check-config-location=false
mybatis-plus.executor-type=simple
 
#mybatis-plus.configuration
mybatis-plus.configuration.map-underscore-to-camel-case=true
mybatis-plus.configuration.default-enum-type-handler=org.apache.ibatis.type.EnumTypeHandler
mybatis-plus.configuration.aggressive-lazy-loading=true
mybatis-plus.configuration.lazy-loading-enabled=true
mybatis-plus.configuration.auto-mapping-behavior=partial
mybatis-plus.configuration.auto-mapping-unknown-column-behavior=none
mybatis-plus.configuration.local-cache-scope=session
mybatis-plus.configuration.cache-enabled=true
mybatis-plus.configuration.call-setters-on-nulls=false
mybatis-plus.configuration.configuration-factory=
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
 
#mybatis-plus.global-config
mybatis-plus.global-config.banner=true
mybatis-plus.global-config.enable-sql-runner=false
mybatis-plus.global-config.super-mapper-class=com.baomidou.mybatisplus.core.mapper.Mapper
 
#mybatis-plus.global-config.db-config
mybatis-plus.global-config.db-config.id-type=assign_id
mybatis-plus.global-config.db-config.table-prefix=tbl_
mybatis-plus.global-config.db-config.schema=
mybatis-plus.global-config.db-config.column-format=
mybatis-plus.global-config.db-config.property-format=
mybatis-plus.global-config.db-config.table-underline=true
mybatis-plus.global-config.db-config.capital-mode=false
mybatis-plus.global-config.db-config.logic-delete-field=
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
mybatis-plus.global-config.db-config.insert-strategy=not_null
mybatis-plus.global-config.db-config.update-strategy=not_null
mybatis-plus.global-config.db-config.select-strategy=not_null

小结

以上的【MyBatis-Plus配置详解】是一心同学是在网上阅读了不少【文章】,同时也有参考了几位【牛人】的讲解,最后【整理】出来的,大家也看到,这配置是非常的多,我们只需要大概知道其配置有什么功能,然后在开发过程中直接【应用】即可。


版权声明:本文为CSDN博主「一心同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/Huang_ZX_259/article/details/122562231

相关推荐
HaiFan.12 分钟前
SpringBoot 事务
java·数据库·spring boot·sql·mysql
我要学编程(ಥ_ಥ)20 分钟前
一文详解“二叉树中的深搜“在算法中的应用
java·数据结构·算法·leetcode·深度优先
music0ant23 分钟前
Idea 添加tomcat 并发布到tomcat
java·tomcat·intellij-idea
计算机徐师兄1 小时前
Java基于SSM框架的无中介租房系统小程序【附源码、文档】
java·微信小程序·小程序·无中介租房系统小程序·java无中介租房系统小程序·无中介租房微信小程序
源码哥_博纳软云1 小时前
JAVA智慧养老养老护理帮忙代办陪诊陪护小程序APP源码
java·开发语言·微信小程序·小程序·微信公众平台
忒可君2 小时前
C# winform 报错:类型“System.Int32”的对象无法转换为类型“System.Int16”。
java·开发语言
斌斌_____2 小时前
Spring Boot 配置文件的加载顺序
java·spring boot·后端
路在脚下@2 小时前
Spring如何处理循环依赖
java·后端·spring
一个不秃头的 程序员3 小时前
代码加入SFTP JAVA ---(小白篇3)
java·python·github
丁总学Java3 小时前
--spring.profiles.active=prod
java·spring