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

2年前 (2022) 程序员胖胖胖虎阿
287 0 0

📢📢📢📣📣📣

哈喽!大家好,我是【一心同学】,一位上进心十足的【Java领域博主】!😜😜😜

✨【一心同学】的写作风格:喜欢用【通俗易懂】的文笔去讲解每一个知识点,而不喜欢用【高大上】的官方陈述。

✨【一心同学】博客的领域是【面向后端技术】的学习,未来会持续更新更多的【后端技术】以及【学习心得】。

✨如果有对【后端技术】感兴趣的【小可爱】,欢迎关注一心同学】💞💞💞

❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️ 


目录

前言

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

如果这篇【文章】有帮助到你,希望可以给【一心同学】点个👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点,如果有对【后端技术】感兴趣的小可爱,也欢迎关注❤️❤️❤️ 【一心同学】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

版权声明:程序员胖胖胖虎阿 发表于 2022年9月10日 上午3:32。
转载请注明:MyBatis-Plus——超详细讲解配置文件 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...