x
//【条件构造器Wrapper -- 简介】
/*
为了清晰表示父类子类,我们用阶梯的形式写出来,如下
Wrapper: 条件构造抽象类,最顶端父类
AbstractWrapper: 用于查询条件封装。该类是抽象类,有三个子类
QueryWrapper: 封装查询的条件。除了查询还用于删除
UpdateWrapper: 封装修改的条件,还可以封装修改的字段
AbstractLambdaWrapper: 该类是抽象类,可以使用Lambda语法。该类是抽象类,有两个子类
LambdaQueryWrapper: 使用Lambda语法来封装查询的条件。。除了查询还用于删除
LambdaUpdateWrapper: 使用Lambda语法来封装修改的条件
注意: 无论是查询,删除、修改,都可使用QueryWrapper类,原因:UpdateWrapper、QueryWrapper、AbstractLambdaWrapper的父类是同一个
注意: 下面叙述中的逻辑字段,如何判断逻辑字段对应的数据是否被删除。只需要看该逻辑字段的值即可,如果是0的话(我们创建逻辑字段时要求手动赋值为0)就表示未删除,如果是1就表示已经被逻辑删除
*/
//下面我们会讲Wrapper的其中一个子类,也就是LambdaQueryWrapper
----------------------------------------------
//【条件构造器Wrapper -- LambdaQueryWrapper类的条件封装】
//上面我们讲的两个都是QueryWrapper类的条件封装,下面就会讲LambdaQueryWrapper类的条件封装
public void zidingyi_test11(){
//下面就讲如何筛,首先我们需要有成员变量模拟用户提交给我们的数据。例如:用户提交以下数据进行模糊查询,然后判断年龄的区间。那我们就首先筛一下给的数据,如果数据可以,就作为条件去数据库查询
String zidingyi_username = "";//用户提交的姓名是空字符串
Integer zidingyi_ageBegin = 20;//用户提交的年龄最小值是20
Integer zidingyi_ageEnd = 30;//用户提交的年龄最大值是30
//创建条件构造器,并判断用户给我们的数据满不满足条件,如果满足才会正常的进入条件构造器
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(StringUtils.isNotBlank(zidingyi_username),User::getName,zidingyi_username)
.ge(zidingyi_ageBegin != null,User::getAge,zidingyi_ageBegin)
.le(zidingyi_ageEnd != null,User::getAge,zidingyi_ageEnd);
//多个条件用链式编程,每个条件的括号都是三个参数,分别是'要满足的条件'、'User类的成员变量的get方法'、’用户给你的字段‘。代码中用的方法跟上面的原始组装条件一样,就是写法不同
//上面那行就显示出QueryWrapper类的条件封装的优点,它不需要你去记数据库的字段,你直接写'User类的成员变量的get方法'即可
//把赋值好的queryWrapper,放到userMapper里面
List<User> userList = userMapper.selectList(queryWrapper);
//由于是List集合,所以我们需要forEach遍历输出
userList.forEach(System.out::println);
}
//注意如果k条数据里有逻辑字段,并且逻辑字段不为空,并且k数据已经被逻辑删除了,那么此时执行这里的查询方法,k数据即使符合条件也不会被查询到