00:00
好,那下面我们就来测试一下咱们的这个条件构造器,那首先我们第一个测试的方法呢,就是咱们的select list方法来组装一下我们的查询条件,好,那我们下面呢,咱们来先创建一个测试类,比如说这个测试类咱们就叫做my be plus rapper。Test OK,好,那我们既然是测试类的话,我们需要来添加注解spring test OK,那我们下面是不是就可以干嘛了,来对我们当前所需要用到的组件来进行一个自动装配,比如说我们先来创建咱们的第一个测试方法public void,叫做TEST01 OK,好,比如说呢,我们现在要来调用的方法是不是应该是咱们的select list方法,大家会发现其中是不是就有一个weper类型的参数,那咱们之前也说了,因为我们的weper它是一个抽象类,所以说我们现在要想来为weper进行赋值的话,那我们是不是就应该来找到它的子类,没问题吧?而我们现在能够进行查询条件封装的是不是应该是我们的什么?哪一个类呢?哪一个子类呢?是不是叫做query wrapper,对不对?好,那我们先把这个方法呢,然后先写出来,然后下面把我们所需要用到的这一个对象给创建出来,叫。
01:22
叫做query rapper,好,它是有泛型的,然后其实我们可以在这个地方咱们也能够看出来,然后它的泛型其实是和我们当前咱们所操作的实体类的类型保持一致的,那所以说我们在创建这个对象的时候,是不是也要将泛型指定为咱们的实体类类型,OK,好,然后等于new一个query wrapper,然后下面我们该如何使用呢?大家来看其中的方法,其实我们一眼就能够看出来对不对,比如说is not难干什么的括号中传输的参数是一个字段名,是不是应该就是来判断我们当前咱们的字段不为空对吧?比between,然后呢,里面有一个字段名,还有一个Y1Y2的值,那是不是应该就是来判断某一个字段的值在哪两个值之间,没问题吧,比如说我们现在。
02:15
然后我们的这一个场景啊,大家来看,我们需要来查询的是。用户名包含。A。然后年龄在20~30之间。然后并且咱们的邮箱信息,然后不为null的用户信息,OK,好,那大家来看,这个就是我们当前的一个场景,那如果我们要想来实现这个功能的话,大家该怎么去写,其实就是来调用我们的条件构造器中相对应的方法,比如说我们现在要来实现的是用户名包含A,那其实这就是一个模糊查询,而我们的模糊查询的方法用的是什么呢?大家看好是like方法,其中一共有两个参数,第一个参数写的是谁呀?字段名,第二个参数是我们当前要模糊的一个值,模糊查询的一个值,那所以说咱们先把字段名给写出来,大家注意啊,看好这个地方叫column column是什么字段列的意思,所以说这个地方写的并不是咱们实体类中的属性名,写的应该是谁?写的是我们数据库中这个表的字段名,大家注意啊,好那。
03:30
我们来表示用户名的字段名叫什么?是不是叫做user下划线内,所以说咱们在这来写的也是user下划线内,好,那我们要来模糊的值是谁?A,好,写完之后那我们直接加分号吗?其实不然,大家看我们当前所调用的所有的方法,它的返回值是不是都是query weper,那说明什么?那说明我们在使用了query weer中的。某一个方法之后,我们是不是就可以来使用一个链式结构的调用,对不对,这个大家注意啊,好,然后下面咱们再点咱们的第二个条件是什么?是不是应该是年龄在20~30之间,那什么叫20~30之间,是不是应该是大于等于20,小于等于30,好,这个地方大家可以用GE,然后叫做大于等于,然后还有就是咱们的L,然后叫做小于等于来实现,当然我们也有更简单的方法,叫做between,什么意思,是不是应该直接就相当于我们大于等于谁,小于等于谁,OK吧,好,那我们要来操作的字段,然后是年龄,然后呢,咱们的初始值是20,然后结束值是30,然后再往下继续,咱们的第三个条件是来判断我们的邮箱不为难,那所以说我们来使用的方法就是is not难。
04:51
其实这些方法名都是建名实义的,所以说大家认真的去分析一下,就能够从我们的方法名中,然后去判断出这个方法的作用,OK吧,好,然后再把咱们的email mail,对吧,然后设置进来就可以了,那这个就是我们的条件构造器,那下面咱们把这个对象呢放在咱们的参数位置,然后可以获取一个list的集合,然后下面我们就可以把它给输出list.for each system.out然后print l。
05:27
好,那我们下面咱们就来测试一下这个功能,看它能不能够正常执行,然后看它执行出来的结果是不是正确的一个结果,并且咱们来查看一下我们的SQL语句,看是不是按照我们当前我们所需要查询的一个条件来进行编写的呢?来大家来看。嗯。好,大家来看一下这个结果啊,好,大家看没问题,已经执行成功了,对吧?好,那我们现在呢,咱们来找到我们当前的一个结果,User ID等于四,Name等于3D,首先大家看用户名中是不是应该是包含有A的,年龄是不是在20~30之间的,而且邮箱是不是不为nul啊,对不对?好,那我们可以观察一下我们当前的数据库对吧?数据库里面20~30之间的包含有A的,大家会发现这儿是不是还有一个叫Jack的,没问题吧,然后他的邮箱也不为空,他的年龄也是在20~30之间,那为什么他没有查出来呢?哎,大家还记不记得我们之前咱们是不是做的一个逻辑删除,那逻辑删除如果is deleted,也就是表示逻辑删除,删除状态的这个字段的值为一的话,它表示的是已删除状态,那大家说当我们查询这张表中的数据的时候,能把咱们已删除状态的数据查询出来吗?
06:56
不能,所以说咱们查询出来的结果只有这一条数据,那我们下面咱们再来观察一下我们的circle语句,大家看一下select的u ID ID user_name as name,然后email is deleted from我们当前的表名,然后where is deleted等于零,大家注意,嗯,咱们使用了逻辑删除之后我就跟大家说过,对吧?我们所有的查询功能将查询出来的全部都是未删除状态的数据,所以说这个是我们的前提条件,然后再往下加了一个and,是不是再加上我们刚才通过条件构造器所封装的条件,Username like and age between,然后还有email is not nice。
07:40
OK吧,这个就是我们的条件构造器,那我们刚才呢,咱们是不是就测试了一个封装,然后来组装我们当前的一个查询条件的操作,这个大家注意一定要知道该如何去使用,因为毕竟我们以后咱们的查询的操作里面,对吧,然后有很多的查询操作,它都是带条件的查询操作,OK,好,那我们把这个SQ语句把它给复制过来,放在我们当前的这一个代码里面。
08:09
OK啊。
我来说两句