一、 条件查询方式(三种格式)
- MyBatisPlus将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的组合
- 格式一:常规格式
//方式一:按条件查询 QueryWrapper qw = new QueryWrapper(); //小于3 qw.lt("id",3); List userList = userDao.selectList(qw); System.out.println(userList);
- 格式二:链式编程查询
QueryWrapper qw = new QueryWrapper(); //小于3大于1 qw.lt("id",3).gt("id",1); List userList = userDao.selectList(qw); System.out.println(userList);
- 格式三:lambda格式(推荐)
//方式三:lambda格式按条件查询 LambdaQueryWrapper<User> lwq = new LambdaQueryWrapper<>(); //id为1到3之间 lwq.lt(User::getId,3); lwq.gt(User::getId,1); //id为小于2或者大于3 //链式查询 lwq.lt(User::getId,2).or().gt(User::getId,3); List userList = userDao.selectList(lwq); System.out.println(userList);
- 并且:
qw.lt("id",3).gt("id",1);
- 或者:
lwq.lt(User::getId,2).or().gt(User::getId,3);
二、 条件查询 – – null值处理
2.1 if语句控制追加
UserQuery uq = new UserQuery(); uq.setId(1); uq.setId2(3); //null判定 LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>(); if(null != uq.getId()) { lqw.lt(User::getId,uq.getId2()); } if(null != uq.getId2()) { lqw.gt(User::getId,uq.getId()); } List<User> userList = userDao.selectList(lqw); System.out.println(userList);
2.2 条件参数控制
//先判定第一个参数是否为true,如果为true,连接当前条件 UserQuery uq = new UserQuery(); uq.setId(1); uq.setId2(3); //null判定 LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>(); lqw.gt(null!=uq.getId2(), User::getId, uq.getId()) lqw.lt(null!= uq.getId(),User::getId,uq.getId2()); List<User> userList = userDao.selectList(lqw); System.out.println(userList);
2.3 条件参数控制(链式编程)
//先判定第一个参数是否为true,如果为true,连接当前条件 UserQuery uq = new UserQuery(); uq.setId(1); uq.setId2(3); //null判定 LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>(); lqw.gt(null!=uq.getId2(), User::getId, uq.getId()) .lt(null!= uq.getId(),User::getId,uq.getId2()); List<User> userList = userDao.selectList(lqw); System.out.println(userList);
三、查询投影
3.1 查询结果包含模型类中部分属性
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>(); lqw.select(User::getId,User::getAddr); List<User> userList = userDao.selectList(lqw); System.out.println(userList);
3.2 查询结果包含模型类中未定义的属性
QueryWrapper<User> qw = new QueryWrapper<>(); qw.select("count(*) as count"); qw.groupBy("gender"); List<Map<String, Object>> userList = userDao.selectMaps(qw); System.out.println(userList);