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,达到了预期效果