性能分析插件
我们在平时的开发中,会遇到一些慢sql。测试!druid,
作用:性能分析拦截器,用于输出每条 SQL 语句及其执行时间
MybatisPlus也提供性能分析插件,如果超过这个时间就停止运行!
1、导入插件
/**
* SQL执行效率插件
*/
@Bean
@Profile({"dev","test"})// 设置 dev test 环境开启,保证我们的效率
public PerformanceInterceptor performanceInterceptor() {
PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
// 在工作中,不允许用户等待
performanceInterceptor.setMaxTime(100);//ms 设置sql执行的最大时间,如果超过了则不执行
performanceInterceptor.setFormat(true);
return new PerformanceInterceptor();
}
记住,要在SpringBoot中配置环境为dev或者test环境!
2、测试使用
@Test
void contextLoads() {
//参数是一个 Wrapper , 条件构造器, 我们先不用
//查询全部用户
List<User> userList = userMapper.selectList(null);
userList.forEach(System.out::println);
}
使用性能分析插件,可以帮助我们提升效率!
条件构造器
十分重要:Wrapper
我们写一些复杂的sql就可以使用他来替代!
1、测试一,记住查看输出的SQL进行分析
@Test
void contextLoads() {
//查询name不为空的用户,并且邮箱不为空的用户,年龄大于等于12
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper
.isNotNull("name")
.isNotNull("email")
.ge("age",12);
userMapper.selectList(wrapper).forEach(System.out::println);//和我们刚才学习的map对比一下
}
2、测试二,记住查看输出的SQL进行分析
@Test
void test2(){
// 查询名字Jack
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name","Tom");
User user = userMapper.selectOne(wrapper); // 查询一个数据,出现多个结果使用List 或者 Map
System.out.println(user);
}
3、测试三,记住查看输出的SQL进行分析
@Test
void test3(){
// 查询年龄在 20~30岁 之间的用户
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.between("age",20,30);//区间
Integer integer = userMapper.selectCount(wrapper);//查询结果数
System.out.println(integer);
}
4、测试四,记住查看输出的SQL进行分析
@Test
void test4(){
// 查询年龄在 20~30岁 之间的用户
QueryWrapper<User> wrapper = new QueryWrapper<>();
// 左和右 %e%
wrapper
.notLike("name","a")
.likeRight("email","t");
List<Map<String, Object>> maps = userMapper.selectMaps(wrapper);//查询结果数
maps.forEach(System.out::println);
}
5、测试五(内查询)
@Test
void test5(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
// id 在子查询中查出来
// (select id from user where id > 3 )
wrapper.inSql("id","select id from user where id > 3 ");
List<Object> objects = userMapper.selectObjs(wrapper);//查询结果数
objects.forEach(System.out::println);
}
6、测试六
//测试六
@Test
void test6(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
// 通过id进行排序
wrapper.orderByAsc("id");
List<User> userList = userMapper.selectList(wrapper);//查询结果数
userList.forEach(System.out::println);
}