二、进阶配置
本部分(Configuration)的配置大都为 MyBatis 原生支持的配置,这意味着您可以通过 MyBatis XML 配置文件的形式进行配置。
(1)、mapUnderscoreToCamelCase
- 类型:
boolean
- 默认值:
true
是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN(下划线命名) 到经典 Java 属性名 aColumn(驼峰命名) 的类似映射。
注意:
此属性在 MyBatis 中原默认值为 false,在 MyBatis-Plus 中,此属性也将用于生成最终的 SQL 的 select body
如果您的数据库命名符合规则无需使用 @TableField
注解指定数据库字段名
(2)、aggressiveLazyLoading
- 类型:
boolean
- 默认值:
true
当设置为 true 的时候,懒加载的对象可能被任何懒属性全部加载,否则,每个属性都按需加载。需要和 lazyLoadingEnabled 一起使用。
1.Spring Boot:
mybatis-plus:
configuration:
aggressive-lazy-loading: true
2.Spring MVC:
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<property name="configuration">
<bean class="com.baomidou.mybatisplus.core.MybatisConfiguration">
<property name="aggressiveLazyLoading" value="true"/>
</bean>
</property>
</bean>
(3)、autoMappingBehavior
- 类型:
AutoMappingBehavior
- 默认值:
partial
MyBatis 自动映射策略,通过该配置可指定 MyBatis 是否并且如何来自动映射数据表字段与对象的属性,总共有 3 种可选值:
- AutoMappingBehavior.NONE:不启用自动映射
- AutoMappingBehavior.PARTIAL:只对非嵌套的 resultMap 进行自动映射
- AutoMappingBehavior.FULL:对所有的 resultMap 都进行自动映射
1.Spring Boot:
mybatis-plus:
configuration:
auto-mapping-behavior: partial
2.Spring MVC:
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<property name="configuration">
<bean class="com.baomidou.mybatisplus.core.MybatisConfiguration">
<property name="autoMappingBehavior" value="PARTIAL"/>
</bean>
</property>
</bean>
(4)、autoMappingUnknownColumnBehavior
- 类型:
AutoMappingUnknownColumnBehavior
- 默认值:
NONE
MyBatis 自动映射时未知列或未知属性处理策略,通过该配置可指定 MyBatis 在自动映射过程中遇到未知列或者未知属性时如何处理,总共有 3 种可选值:
- AutoMappingUnknownColumnBehavior.NONE:不做任何处理 (默认值)
- AutoMappingUnknownColumnBehavior.WARNING:以日志的形式打印相关警告信息
- AutoMappingUnknownColumnBehavior.FAILING:当作映射失败处理,并抛出异常和详细信息
1.Spring Boot:
mybatis-plus:
configuration:
auto-mapping-unknown-column-behavior: none
2.Spring MVC:
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<property name="configuration">
<bean class="com.baomidou.mybatisplus.core.MybatisConfiguration">
<property name="autoMappingUnknownColumnBehavior" value="NONE"/>
</bean>
</property>
</bean>
(5)、cacheEnabled
- 类型:
boolean
- 默认值:
true
全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存,默认为 true。
1.Spring Boot:
mybatis-plus:
configuration:
cache-enabled: true
2.Spring MVC:
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<property name="configuration">
<bean class="com.baomidou.mybatisplus.core.MybatisConfiguration">
<property name="cacheEnabled" value="true"/>
</bean>
</property>
</bean>
(6)、callSettersOnNulls
- 类型:
boolean
- 默认值:
false
指定当结果集中值为 null 的时候是否调用映射对象的 Setter(Map 对象时为 put)方法,通常运用于有 Map.keySet() 依赖或 null 值初始化的情况。
通俗的讲,即 MyBatis 在使用 resultMap 来映射查询结果中的列,如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段,这就导致在调用到该字段的时候由于没有映射,取不到而报空指针异常。
当您遇到类似的情况,请针对该属性进行相关配置以解决以上问题。
注意:基本类型(int、boolean 等)是不能设置成 null 的。
1.Spring Boot:
mybatis-plus:
configuration:
call-setters-on-nulls: false
2.Spring MVC:
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<property name="configuration">
<bean class="com.baomidou.mybatisplus.core.MybatisConfiguration">
<property name="callSettersOnNulls" value="false"/>
</bean>
</property>
</bean>
(7)、configurationFactory
- 类型:
Class<?>
- 默认值:
null
指定一个提供 Configuration 实例的工厂类。该工厂生产的实例将用来加载已经被反序列化对象的懒加载属性值,其必须包含一个签名方法static Configuration getConfiguration()
。(从 3.2.3 版本开始)
1.Spring Boot:
mybatis-plus:
configuration:
configuration-factory: com.xxx.SampleConfigurationFactory
2.Spring MVC:
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<property name="globalConfig">
<bean class="com.baomidou.mybatisplus.core.config.GlobalConfig">
<property name="configurationFactory" value="com.xxx.SampleConfigurationFactory"/>
</bean>
</property>
</bean>