一、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属性, 参数));
...