用处
当我们在平时的开发中会遇到一些执行比较慢的sql,我们经常会使用一些测试工具去测试,例如druid。而且Mybatis Plus也独自提供了一个插件:用于输出每条 SQL 语句及其执行时间,如果sql执行时间超过了规定的最大执行时间将会被阻断并抛出异常。
简单实用
- 添加组件
package com.pning.conf;
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
@EnableAutoConfiguration
@Configuration
public class MybatisPlusConfig {
//乐观锁
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
//分页
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
//逻辑删除
@Bean
public ISqlInjector iSqlInjector(){
return new LogicSqlInjector();
}
//性能分析插件也叫性能分析拦截器
@Bean
@Profile({"dev","test"})// 设置 dev test 环境开启
public PerformanceInterceptor performanceInterceptor() {
PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
performanceInterceptor.setMaxTime(50);//设置sql执行的最大实际,如果超过则不执行
performanceInterceptor.setFormat(true);//sql输出格式化
return performanceInterceptor;
}
}
- 测试方法
@Test
public void selectList(){//在组件里面添加了个性能分析插件,查询所有用户超过了设定的最大时间,所以这个方法暂时执行不了
List<User> userList = userMapper.selectList(null);//里面的参数就是一个wrapper,也就是条件构造器,如果不用的话写为null即可
userList.forEach(System.out::println);
}