一、说明

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

异常信息可参考:

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐