MyBatis-Plus提供了执行SQL分析打印功能,该功能完美的输出打印 SQL 及执行时长。
1、配置性能分析插件
@Bean @Profile({"dev","test"}) public PerformanceInterceptor performanceInterceptor(){ PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor(); performanceInterceptor.setMaxTime(10);//设置sql执行的最大时间,单位:ms performanceInterceptor.setFormat(true);//sql格式化 return performanceInterceptor; }
2、执行sql测试
@Test void insertTest(){ User user = new User(); user.setAge(20); user.setName("shenming"); user.setEmail("123456789@qq.com"); userMapper.insert(user); }
查看控制台日志输出:报错,但sql还是执行成功
2、条件查询器Wrapper 2.1、条件构造器的作用MyBatis-Plus 提供的通用Mapper中,删改查(没有insert)的方法通常会需要我们传入一个条件构造器,用来生成最后执行的SQL语句。
比如 userMapper.selectList( Wrapper queryWrapper); 方法,当我们传入null时,默认生成的语句就是select * from xxx,这条语句没有查询条件,排序,子查询,模糊查询并且固定查询所有的字段,如果我们需要一些复杂的查询条件,就可以使用条件构造器来指定我们的SQL需要拼接那些查询条件。
2.2、条件构造器结构Wrapper : 条件构造抽象类,最顶端父类
AbstractWrapper :QueryWrapper(LambdaQueryWrapper)和UpdateWrapper(LambdaUpdateWrapper) 的父类用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件。
AbstractLambdaWrapper :Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。
LambdaQueryWrapper :Lambda形式的查询Wrapper。
LambdaUpdateWrapper :Lambda 形式的更新Wrapper。
QueryWrapper :继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件及 LambdaQueryWrapper, 可以通过 new QueryWrapper().lambda() 方法获取。
UpdateWrapper : 继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件及 LambdaUpdateWrapper, 可以通过 new UpdateWrapper().lambda() 方法获取。
2.3、条件构造器的使用常用词解释:
where WHERe 语句,拼接 + WHERe 条件
and AND 语句,拼接 + AND 字段=值
andNew AND 语句,拼接 + AND (字段=值) (新的括号)
or OR 语句,拼接 + OR 字段=值
orNew OR 语句,拼接 + OR (字段=值)
eq 等于=
allEq 基于 map 内容等于=
ne 不等于<>
gt 大于>
ge 大于等于>=
lt 小于<
le 小于等于<=
like 模糊查询 LIKE
notLike 模糊查询 NOT LIKE
in IN 查询
notIn NOT IN 查询
isNull NULL 值查询
isNotNull IS NOT NULL
groupBy 分组 GROUP BY
having HAVINg 关键词
orderBy 排序 ORDER BY
orderAsc ASC 排序 ORDER BY
orderDesc DESC 排序 ORDER BY
exists EXISTS 条件语句
notExists NOT EXISTS 条件语句
between BETWEEN 条件语句
notBetween NOT BETWEEN 条件语句
addFilter 自由拼接 SQLlast 拼接在最后,例如:last(“LIMIT 1”)
查询姓名不为空,邮箱不为空,年龄大于等于12岁且小于等于20岁,版本号为1的用户
@Test void testWrapper(){ QueryWrapperqueryWrapper = new QueryWrapper<>(); queryWrapper.isNotNull("name") .isNotNull("email") .eq("version",1) .ge("age",12) .le("age",20); //上面两行等价于:queryWrapper.between("age",12,20); userMapper.selectList(queryWrapper).forEach(System.out::println); }
模糊查询:查询姓名不包含“w”,邮箱以1开头的用户数据
@Test void test4(){ QueryWrapperqueryWrapper = new QueryWrapper<>(); queryWrapper.notLike("name","w") .likeRight("email","1"); List
说明: likeRight表示‘%’加在右侧,即"1%",likeLeft表示‘%’加在左侧,即"%1",like就是两边都加%
排序,根据id进行降序
@Test void test5() { QueryWrapperqueryWrapper = new QueryWrapper<>(); queryWrapper.orderByDesc("id"); List users = userMapper.selectList(queryWrapper); users.forEach(System.out::println);
更多关于条件构造器的使用,可以查看官方文档https://baomidou.com/pages/10c804/#abstractwrapper,写的非常详细!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)