一. 性能分析插件
我们平时的开发中, 会需要一些慢SQL, 测试!
Mybatis-Plus也提供了性能分析插件, 如果超过这个时间就会停止运行!
使用性能分析插件, 可以帮助我们提高效率
-
导入插件
// SQL执行效率插件 @Bean // 设置dev 和test环境开启, 保证我们的效率 @Profile({"dev", "test"}) public PerformanceInterceptor performanceInterceptor(){ PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor(); // 单位: ms. 设置sql执行的最大时间, 如果错过就不执行 performanceInterceptor.setMaxTime(1); // 是否开启格式化 performanceInterceptor.setFormat(true); return performanceInterceptor; }
-
设置为开发环境
# 设置开发环境 spring.profiles.active=dev
-
测试使用
二. 条件构造器
十分重要,: Mapper
我们写一些复杂的SQL就可以使用它来代替
-
数据集
-
查询name 和 email不为空, 且 age >= 15的用户
@Test public void test01(){ QueryWrapper<User> wrapper = new QueryWrapper<>(); /** * isNotNull: 不为空 gt: 大于; eq: 等于; lt: 小于 ge: 大于等于; le: 小于等于 */ wrapper.isNotNull("name") .isNotNull("email") .ge("age", 15); userMapper.selectList(wrapper).forEach(System.out::println); }
-
查询一个数据
@Test public void test02(){ QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.eq("name", "Jack"); // selectOne: 查询一个数据, 出现多个用List或Map System.out.println(userMapper.selectOne(wrapper)); }
-
查询年龄在16-20之间的用户数量
@Test public void test03(){ QueryWrapper<User> wrapper = new QueryWrapper<>(); /** * between: 查询区间内的数据: [左闭右闭] * selectCount: 统计数量 */ wrapper.between("age", 16, 20); // selectOne: 查询一个数据 System.out.println(userMapper.selectCount(wrapper)); }
-
模糊查询
@Test public void test04(){ QueryWrapper<User> wrapper = new QueryWrapper<>(); /** * notLike: 不包含指定元素 * likeLeft: 以xx结尾 * likeRight: 以xx开头 */ wrapper.notLike("name", "e") .likeLeft("name", "k") .likeRight("email", "t"); userMapper.selectList(wrapper).forEach(System.out::println); }
-
子查询
@Test public void test05(){ QueryWrapper<User> wrapper = new QueryWrapper<>(); // id在子查询中查出来 wrapper.inSql("id", "select id from user where id < 3"); List<Object> list = userMapper.selectObjs(wrapper); list.forEach(System.out::println); }
-
排序查询
@Test public void test06(){ QueryWrapper<User> wrapper = new QueryWrapper<>(); // 按id降序排序 wrapper.orderByDesc("id"); List<User> userList = userMapper.selectList(wrapper); userList.forEach(System.out::println); }
说明:
- 本文参考了狂神的Mybatis-Plus的课程
- 课程链接