🐌个人主页: 🐌 叶落闲庭
石可破也,而不可夺坚;丹可磨也,而不可夺赤。
MyBatisPlus之DQL编程控制
- [一、 条件查询方式(三种格式)](#一、 条件查询方式(三种格式))
- [二、 条件查询 -- -- null值处理](#二、 条件查询 -- -- null值处理)
-
- [2.1 if语句控制追加](#2.1 if语句控制追加)
- [2.2 条件参数控制](#2.2 条件参数控制)
- [2.3 条件参数控制(链式编程)](#2.3 条件参数控制(链式编程))
- 三、查询投影
-
- [3.1 查询结果包含模型类中部分属性](#3.1 查询结果包含模型类中部分属性)
- [3.2 查询结果包含模型类中未定义的属性](#3.2 查询结果包含模型类中未定义的属性)
一、 条件查询方式(三种格式)
- MyBatisPlus将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的组合
- 格式一:常规格式
java
//方式一:按条件查询
QueryWrapper qw = new QueryWrapper();
//小于3
qw.lt("id",3);
List userList = userDao.selectList(qw);
System.out.println(userList);
- 格式二:链式编程查询
java
QueryWrapper qw = new QueryWrapper();
//小于3大于1
qw.lt("id",3).gt("id",1);
List userList = userDao.selectList(qw);
System.out.println(userList);
- 格式三:lambda格式(推荐)
java
//方式三: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);
- 并且:
java
qw.lt("id",3).gt("id",1);
- 或者:
java
lwq.lt(User::getId,2).or().gt(User::getId,3);
二、 条件查询 -- -- null值处理
2.1 if语句控制追加
java
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 条件参数控制
java
//先判定第一个参数是否为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 条件参数控制(链式编程)
java
//先判定第一个参数是否为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 查询结果包含模型类中部分属性
java
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
lqw.select(User::getId,User::getAddr);
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);
3.2 查询结果包含模型类中未定义的属性
java
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);