【Java】mybatisplus | where | and | or
原创
©著作权归作者所有:来自51CTO博客作者hgsuper的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、说明
1、示例,依赖实体bean
package hg.demo.mybatis.plus.demo;
import lombok.Data;
@Data
public class Demo {
private String id;
private String name;
private Integer age;
}
2、依赖hutool工具
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.5.16</version>
</dependency>
3、依赖lombok
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
4、依赖mybatisplus版本
二、常用where
1、and
1)and直接使用
QueryWrapper<Demo> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(Demo::getId, "1");
2)and非空时,使用
QueryWrapper<Demo> queryWrapper = new QueryWrapper<>();
String id = "";
queryWrapper.lambda().eq(StrUtil.isNotEmpty(id), Demo::getId, id);
2、or
1)直连or
期望效果:
select * from demo where id = 1 or name = 'a'
对应代码:
QueryWrapper<Demo> queryWrapper = new QueryWrapper<>();
String id = "1";
String name = "a";
queryWrapper.lambda()
.eq(StrUtil.isNotEmpty(id), Demo::getId, id)
.or()
.eq(StrUtil.isNotEmpty(name), Demo:: getName, name)
;
2)and + or
期望效果:
select * from demo where id = 1 and (name = 'a' or age = 10)
对应代码:
QueryWrapper<Demo> queryWrapper = new QueryWrapper<>();
String id = "1";
String name = "a";
Integer age = 10;
queryWrapper.lambda()
.eq(StrUtil.isNotEmpty(id), Demo::getId, id)
.and(StrUtil.isNotEmpty(name), q -> {
q.eq(StrUtil.isNotEmpty(name), Demo:: getName, name)
.or()
.eq(null != age, Demo::getAge, age)
;
});
说明: and()里面,需要加进入条件,不然如果内容为空,会有异常;
异常信息可参考: