
QueryWrapper 在多条件查询(包括 等于eq,模糊查询like ,in 包含查询)时, 假如需要同时满足多个条件,举个例子吧
有张user表 , 包含id name 等字段
假如需要id 包含 数组arr 且name like * ,这时候,需要对arr做判空处理, 因为在arr为空的情况下,mybatis plus 会直接去掉in 这个条件的判断,会导致只要user表中的数据 满足 name like * 条件 ,就会被查出来,这是有问题的,我们需要的是 id 包含 arr和name like * 同时满足条件时才会被查出来,这可能是mybatis plus 内部的一个特殊逻辑处理,希望大家在使用时,碰到类似的情况多做下判断。
UserMapper:
如果queryWrapper调用了 .isNotNull("name")、 .isNotNull("email")、 .ge("age",12)
那么运行的sql就是这样的:(注意where字句)
如果queryWrapper只是调用了.isNotNull("name")
那么运行结果就是这样的:(注意where子句)
找到规律了没?
其实很简单,QueryWraper就是增加where字句的。queryWrapper调用了一下 .isNotNull("name"),那么sql语句的where条件里面就加一句and name IS NOT NUL,queryWrapper再调用一下.ge("age",12),那么sql语句得where条件里面就再加一句and age >12。
mybatisplus自定义sql
参考: https://www.cnblogs.com/baiyifengyun/p/13756653.html
mybatisplus自定义sql+QueryWrapper
这里举一个多表联查的例子
实体类:
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)