一、说明

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版本

3.4.1

二、常用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()里面,需要加进入条件,不然如果内容为空,会有异常;

异常信息可参考:

【Java】mybatisplus | where | and | or_webview