欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Mybatis-plus查询语句加括号(.or(),.and())问题,

来源: javaer 分享于  点击 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()的使用与原理详解
    相关栏目:

    用户点评