Mybatis-Plus模糊查询

1.模糊查询时,如果想把多个or当做一个条件比如
示例1:select * from table where age=20 and (level=1 or levle=2 or name=“shadiao”)
记得用andNew(),andNew()相当于新建了一个括号.

补充的小知识点:
示例2:select * from table where age=20 or level=1 or levle=2 or name="shadiao’’
这个示例2的sql里 age=20是一个充分不必要条件,而示例1的sql里age=20是个必要条件

2.如果andNew()后面跟了一个and;
比如

 dev.andNew().like("name",gateway.getDescription(), SqlLike.DEFAULT)
            .or().like("mac",gateway.getDescription(), SqlLike.DEFAULT)
            .or().like("ip",gateway.getDescription(), SqlLike.DEFAULT);
   dev.and().eq("organization_id",orgId);

这个orgId会加入andNew()的括号中,所以不要瞎用and
下面是个正确的示例

  @Override
    public Page<UnionGateway> findAllGateway(int currentPage, int pageSize, UnionGateway gateway, Users user) {


        //根据用户查询所属组织
        int orgId = user.getOrg();
        Page<UnionGateway> page = new Page<>(currentPage, pageSize);
        EntityWrapper<UnionGateway> dev = new EntityWrapper(gateway);
        dev.setEntity(new UnionGateway());

        //!"".equals(gateway.getDescription())
        if (null!=gateway.getDescription() && !gateway.getDescription().equals("") ){
            dev.andNew().like("name",gateway.getDescription(), SqlLike.DEFAULT)
            .or().like("mac",gateway.getDescription(), SqlLike.DEFAULT)
            .or().like("ip",gateway.getDescription(), SqlLike.DEFAULT);
        }


        if (null!=gateway.getType() && !gateway.getType().equals("")){
            dev.eq("type",gateway.getType());
        }
        if(!user.getRole().equals("susys")){
            dev.eq("organization_id",orgId);
        }
        dev.eq("is_delete",gateway.getIsDelete());
        dev.orderBy("create_time desc");
        Page<UnionGateway> getwayPage = iUnionGatewayService.selectPage(page, dev);
        return getwayPage;
    }

你可能感兴趣的:(Mybatis-Plus模糊查询)