MyBatisPlus笔记03 条件构造器
coconutnut

https://www.bilibili.com/video/BV1rE41197jR

p33~39

Wrapper接口实现类重点有AbstractWrapper和AbstractChainWrapper

区别在于AbstractChainWrapper采用lambda表达式编写

使用

以allEq为例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 QueryWrapper<User> wrapper = new QueryWrapper<>();

// 设置条件
Map<String,Object> params = new HashMap<>();
params.put("name", "张三");
params.put("age", "20");
params.put("password", null);

wrapper.allEq(params);

// 查询
List<User> users = this.userMapper.selectList(wrapper);
for (User user : users) {
System.out.println(user);
}

这样生成的sql语句为

1
SELECT * FROM tb_user WHERE password IS NULL AND name = ? AND age = ?

第二个参数为false时忽略值为null的

1
wrapper.allEq(params,false);

生成的sql语句为

1
SELECT * FROM tb_user WHERE name = ? AND age = ?

还可以设置过滤器

基本比较操作

官方文档

模糊查询

like、notLike、likeLeft、likeRight

例如

1
2
3
4
5
6
7
8
QueryWrapper<User> wrapper = new QueryWrapper<>();

wrapper.like("name", "曹"); // %曹%

List<User> users = this.userMapper.selectList(wrapper);
for (User user : users) {
System.out.println(user);
}

排序

orderBy(默认Asc)、orderByAsc、orderByDesc

例如

1
2
3
4
5
6
7
8
9
QueryWrapper<User> wrapper = new QueryWrapper<>();

// SELECT id,user_name,password,name,age,email FROM tb_user ORDER BY age DESC
wrapper.orderByDesc("age");

List<User> users = this.userMapper.selectList(wrapper);
for (User user : users) {
System.out.println(user);
}

逻辑查询

or、and

例如

1
2
3
4
5
6
7
8
9
QueryWrapper<User> wrapper = new QueryWrapper<>();

// SELECT id,user_name,password,name,age,email FROM tb_user WHERE name = ? OR age = ?
wrapper.eq("name","李四").or().eq("age", 24);

List<User> users = this.userMapper.selectList(wrapper);
for (User user : users) {
System.out.println(user);
}

指定查询字段

select

例如

1
2
3
4
5
6
7
8
9
10
11
12
QueryWrapper<User> wrapper = new QueryWrapper<>();

// SELECT id,name,age FROM tb_user WHERE name = ? OR age = ?
wrapper.eq("name", "李四")
.or()
.eq("age", 24)
.select("id", "name", "age");

List<User> users = this.userMapper.selectList(wrapper);
for (User user : users) {
System.out.println(user);
}