Mybatis-plus查询语句加括号(.or(),.and())问题,
分享于 点击 30208 次 点评:97
Mybatis-plus查询语句加括号(.or(),.and())问题,
目录
- Mybatis-plus查询语句加括号(.or(),.and())
- java代码
- 等价sql
- mybatis plus加括号实现分端查询
- 举例
- 总结
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端实现单一参数多对应查询
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持3672js教程。
您可能感兴趣的文章:- mybatis-plus实现自定义SQL、多表查询与多表分页查询语句实例
- mybatis/mybatis-plus模糊查询语句特殊字符转义拦截器的实现
- Mybatis-Plus中and()和or()的使用与原理详解
用户点评