mp配置
mybatis-plus.config-location = classpath:mybatis-config.xml
mybatis-plus.mapper-locations = classpath*:mapper/**/*.xml
#MyBaits 别名包扫描路径
mybatis-plus.type-aliases-package = com.lagou.mp.pojo
#关闭自动驼峰映射,该参数不能和mybatis-plus.config-location同时存在,否则启动报错,如果要配置,就配置在mybatis-config.xml中
mybatis-plus.configuration.map-underscore-to-camel-case=false
#全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存,默认为 true
mybatis-plus.configuration.cache-enabled=false
<bean id="sqlSessionFactory"
class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="mapperLocations" value="classpath*:mapper/**/*.xml"/>
<!--MyBaits 别名包扫描路径-->
<property name="typeAliasesPackage" value="com.baomidou.mybatisplus.samples.quickstart.entity"/>
</bean>
db映射配置
#全局配置id生成策略,无需在实体类配置@TableId(type=IdType.AUTO)
mybatis-plus.global-config.db-config.id-type=auto
#配置全局表名前缀
mybatis-plus.global-config.db-config.table-prefix=tb_
<!--这里使用MP提供的sqlSessionFactory,完成了Spring与MP的整合-->
<bean id="sqlSessionFactory"
class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="globalConfig">
<bean class="com.baomidou.mybatisplus.core.config.GlobalConfig">
<property name="dbConfig">
<bean
class="com.baomidou.mybatisplus.core.config.GlobalConfig$DbConfig">
<property name="idType" value="AUTO"/>
<property name="tablePrefix" value="tb_"/>
</bean>
</property>
</bean>
</property>
</bean>
配置前缀,有多种该如何配置全局表头?如t_/sys_/flow_
条件构造器
allEq
queryWrapper.allEq(map)//map的key是表字段
queryWrapper.allEq(map,true/false)//map的key是表字段,false时,忽略where中条件为null的字段
queryWrapper.allEq(condition,map,true/false)//map的key是表字段,condition为false,后面的条件都会忽略
queryWrapper.allEq(prediction,map)//前面用lamda表达式,如(k,v)->k.equals("name"),表示只过滤name字段
queryWrapper.select("name")//返回只包括指定的字段
性能分析插件
该插件会打印sql执行时长,通过配置maxTime可以判断,如果超过配置,sql执行会报错
@Bean
public PerformanceInterceptor performanceInterceptor(){
PerformanceInterceptor performanceInterceptor = new
PerformanceInterceptor();
performanceInterceptor.setMaxTime(100);
performanceInterceptor.setFormat(true);
return performanceInterceptor;
}
springmvc中的配置
<plugins>
<!-- SQL 执行性能分析,开发环境使用,线上不推荐。 maxTime 指的是 sql 最大执行时长
-->
<plugin
interceptor="com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor">
<property name="maxTime" value="100" />
<!--SQL是否格式化 默认false-->
<property name="format" value="true" />
</plugin>
</plugins>
乐观锁插件
关键点,生成的实体类中,version字段一定要加上@Version注解,否则以下插件不生效
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
<bean
class="com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor"/>
官网说明,这个插件只能在updateById()和update(entity,wrapper)生效
逻辑删除
增加删除标记字段并为实体类字段增加注解
@TableLogic
private Integer deleted;
application.properties中默认会增加如下配置
# 逻辑已删除值(默认为 1)
mybatis-plus.global-config.db-config.logic-delete-value=1
# 逻辑未删除值(默认为 0)
mybatis-plus.global-config.db-config.logic-not-delete-value=0
加上该标注后,调用deleteById方法,实际上时执行update操作,将标记的字段(如is_deleted)值更新为1;
查询方法如findAll或selectList等等,会自动带上is_deleted=0
,比较实用。