mybatis-plus常用技术点

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,比较实用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值