一、Mybatis Plus中的lambdaQueryWrapper:
用法:
1. mybatis-plus依赖中接口类IService中有这样一个方法
default List<T> list(Wrapper<T> queryWrapper) {
return this.getBaseMapper().selectList(queryWrapper);
}
2.查询生成一个Wrapper
LambdaQueryWrapper<实体类> lambda= new UpdateWrapper<实体类>().lambda();
lambda.eq(实体类::get实体类字段, 入参)
.orderByAsc(实体类::get实体类字段)
.select(实体类::get实体类字段, 实体类::get实体类字段);
或者这么写
LambdaQueryWrapper<实体类> lambda= new LambdaQueryWrapper<实体类>();
lambda.eq(实体类::get实体类字段, 入参)
.orderByAsc(实体类::get实体类字段)
.select(实体类::get实体类字段, 实体类::get实体类字段);
3.SeviceImpl中可以用上面的连个合并返回List(Service层要继承IService,ServiceImpl要继承SerivceImpl)
List<实体类> list = this.list(lambda);
4.list转化
1.list转set:
List notifications= userMapper.selectByExample(userExample);
Set<Long> disUserIds = notifications.stream().map(notify -> notify.getNotifier()).collect(Collectors.toSet());
2.list转map
List users = userMapper.selectByExample(userExample);
//转化成map
Map<Long, User> userMap = users.stream().collect(Collectors.toMap(u -> u.getId(), u -> u));
二、Mybatis Plus中的lambdaUpdateWrapper:
用法(service层中书写):
LambdaUpdateWrapper<实体类> lambda = new UpdateWrapper<实体类>().lambda();
lambda.set(实体类::getName, "张三")
.eq(实体类::getId, id);
this.update(lambda);//提交
另一种写法
LambdaUpdateWrapper<实体类> lambda = new LambdaUpdateWrapper<实体类>();
lambda.set(实体类::getName, "张三")
.eq(实体类::getId, id);
this.update(lambda);//提交
条件构造器
| 查询方式 | 说明 |
|---|---|
| setSqlSelect | 设置 SELECT 查询字段 |
| where | WHERE 语句,拼接 + WHERE 条件 |
| and | AND 语句,拼接 + AND 字段=值 |
| andNew | AND 语句,拼接 + AND (字段=值) |
| or | OR 语句,拼接 + OR 字段=值 |
| orNew | OR 语句,拼接 + OR (字段=值) |
| eq | 等于= |
| allEq | 基于 map 内容等于= |
| ne | 不等于<> |
| gt | 大于> |
| ge | 大于等于>= |
| lt | 小于< |
| le | 小于等于<= |
| like | 模糊查询 LIKE |
| notLike | 模糊查询 NOT LIKE |
| in | IN 查询 |
| notIn | NOT IN 查询 |
| isNull | NULL 值查询 |
| isNotNull | IS NOT NULL |
| groupBy | 分组 GROUP BY |
| having | HAVING 关键词 |
| orderBy | 排序 ORDER BY |
| orderAsc | ASC 排序 ORDER BY |
| orderDesc | DESC 排序 ORDER BY |
| exists | EXISTS 条件语句 |
| notExists | NOT EXISTS 条件语句 |
| between | BETWEEN 条件语句 |
| notBetween | NOT BETWEEN 条件语句 |
| addFilter | 自由拼接 SQL |
| last | 拼接在最后,例如:last("LIMIT 1") |
注意! xxNew 都是另起 ( ... ) 括号包裹。
另外的写法,不使用new(写在seivice层)
this.list(Wrappers.<实体类>lambdaQuery().eq(实体类::get属性, 参数));
this.update(Wrappers.<实体类>lambdaQuery().eq(实体类::get属性, 参数));
...
本文详细介绍了MybatisPlus中LambdaQueryWrapper和LambdaUpdateWrapper的使用方法,包括查询构造、条件设置、排序与筛选等操作,并提供了查询转换为Set和Map的示例。同时展示了如何在Service层进行更新操作,以及条件构造器的各种条件表达式。
3208

被折叠的 条评论
为什么被折叠?



