Mybatis-plus查询语句加括号(.or(),.and())问题
作者:叶梓啊
这篇文章主要介绍了Mybatis-plus查询语句加括号(.or(),.and())问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
Mybatis-plus查询语句加括号(.or(),.and())
java代码
QueryWrapper<Entity> wrapper = new QueryWrapper<>(); wrapper.ne("id", param.getId()) wrapper.and(QueryWrapper -> QueryWrapper.eq("name", name).or().eq("mark", mark)); entityMapper.selectList(wrapper);
等价sql
SELECT id FROM t_entity WHERE (id <> ? AND (name = ? OR mark = ?))
每个and相当于一个括号
mybatis plus加括号实现分端查询
LambdaQueryWrapper<实体类> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(实体类::字段名,参数)
- .and(条件,pr -> pr.like(实体类::字段名,参数)
- .or(条件).like(实体类::字段名,参数));
举例
LambdaQueryWrapper<Entity> lambdaQueryWrapper = new LambdaQueryWrapper(); lambdaQueryWrapper.eq(Entity::getStatus, BaseServiceConstants.STATUS_0) .like(StringUtils.isNotEmpty(busiInfo.getName()) && !appFlag, Entity::getName, busiInfo.getName()) .like(StringUtils.isNotEmpty(busiInfo.getSupervisor()) && !appFlag, Entity::getSupervisor, busiInfo.getSupervisor()) .eq(StringUtils.isNotEmpty(busiInfo.getCode()), Entity::getCode, busiInfo.getCode()) .and(StringUtils.isNotEmpty(busiInfo.getName()) && appFlag, pr -> pr .like( Entity::getName, busiInfo.getName()) .or().like(Entity::getSupervisor, busiInfo.getName()));
通过定义boolean变量 appFlag 来区别查询来自PC还是APP端,APP端实现单一参数多对应查询
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。