mybatisplus轻松完成一次模糊+分页查询

之前一直用mybatis+pageinfo完成模糊+分页查询,还需要手写sql语句,之前一直没做尝试,今天试了试mybatisplus一个人完成模糊+分页,挺简单的

有一个小插曲是,我的前端接受的data中,data.list变成了data.record,一开始没有查到数据,让我差点怀疑自己哪里写错了,在使用sout的检查中我发现service层没有出现错误

//service层

public IPage<Admin> getRootMsg(Params params){
    Page<Admin> pages = new Page<>(params.getPageNum(), params.getPageSize());
    QueryWrapper<Admin> queryWrapper = new QueryWrapper<>();


    if (!StringUtils.isBlank(params.getName())) {
        System.out.println("模糊查询中姓名大概为"+params.getName());
        queryWrapper.like("name", "%" + params.getName() + "%");
    }
    if (params.getAge()!=null) {
        System.out.println("查询中年龄为"+params.getAge());
        queryWrapper.like("age",  "%" +params.getAge()+ "%");
    }
    queryWrapper.and(qr->qr.eq("role","superroot").or().eq("role","root"));
    return adminMapper.selectPage(pages,queryWrapper);
}

//entity层 //MyBatis-Plus 并不直接支持使用 @Transient 注解来标记字段,这里使用tablefield @TableField(exist = false) private String token;

 

 后面我又做了修改,使用mybatisplus我才知道sql语句中原来and的优先级大于or。

如果我在查询A or B and C,如果没有括号,sql语句会优先执行B and C,而我的预期是执行(A or B) and C。

后面通过查询了解到,我可以用and把 A or B括起来,也就是说,这时候语句从A or B and C变成了(A or B) and C,达到了预期效果

posted @ 2023-11-07 19:07  天启A  阅读(286)  评论(0)    收藏  举报