java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Mybatis-plus查询语句加括号(.or(),.and())

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<>();

举例

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端实现单一参数多对应查询

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文