00:00
好,那我们刚才给大家测试的是咱们的这个清新简洁版的一个逆向工程,那下面咱们来测试一下这个奢华尊享版,那首先呢,咱们先把它给我们生成的一些内容呢,先给它删除掉,好,然后把这个呢也给它删除掉。好,然后咱们在这把这个target runtime的值呢,给它改成是my be my be体三啊,大家看好,它是它生成的是带条件的CD奢华尊享版,那什么叫做c rud呢?是增删改茶的意思,那什么叫带条件的呢?哎,咱们一会生成大家就知道了啊好,那这个买杯体三这个奢华尊享版呢,大家注意,它能帮助我们来实现各种功能,咱们对单表的所有的操作基本上都可以通过奢华尊享版来实现,也就是说呀,当我们使用了奢华尊享版这个版本的这个逆向工程的话,它帮助我们实现的这个功能啊,是我们对单表,是我们能实现的对单表的所有的操作。
01:01
啊,非常的方便,这个大家看一下啊,那下面呢,咱们就直接生成呗,来找到我们当前咱们的这个插件,然后双击大家看啊,它生成的内容呢比较多。好。然后我们来看一下,然后这是咱们的map映射文件,然后这个是我们当前的实体类,诶,你会发现它除了有EP和de pd之外,还有个emp example和depd example这东西是干啥的呢?来写条件的,你看在这不是生成带条件的c rud吗?大家注意,这东西就是来写条件的,知道吧,下面咱们再来看,这是它的map接口,那我们就以EP map为例,咱们来看一下这里面它都有什么方法,大家看啊好,那它都有什么方法呢?首先咱们先来看一下第一个。叫做count by example,你记好这个by example就是条件的意思,至于什么条件,咱们先说,说完之后咱们再去测试,具体的去跟大家讲该怎么用啊,就记好这就是BY,一个example就是通过条件,所以说这是干嘛的,通过条件来获取什么当前的总记录数,然后这个叫做根据条件来进行删除,这个叫做根据主件来删除,有腾老师,这俩有什么区别,很简单啊,然后这个是只能根据咱们的EPID来进行删除,而这个你可以以任意的条件来进行删除,比如说你来删除的是员工姓名等于张三的,咱们就可以通过它来实现,而如果你现在只根据ID来删除,那咱们就只能,那咱们可以用这个方法,你也可以用这个方法,知道吧,这样的啊,好,再往下大家看好这个是什么叫做添加。
02:44
这叫什么选择性添加?什么意思?添加和选择性添加干什么呢?大家注意,选择性添加是啥呢?就是说我们当前的如果你用的是普通的添加,比如说这EP里面有一个属性的职位难。
03:01
有一个属性的值为nu,那我们用普通添加的时候,哪怕你的属性值为nu,那它也会为它所对应的字段赋值一个nu,就比如说啊,然后emp下划线内emp内的值为难,那这个时候当我们在通过这个方法实现添加的时候,它会为emp下划线下划线内这个字段赋值为一个难,是这样的。而什么叫选择性添加看好如果我们当前咱们的EP里面哪一个属性的职位难的话,那当前它就不会为所对应的字段进行扶持。有的老师有啥区别呢?没区别呀,你给它赋值为难,你不给它赋值,它不也是难吗?大家注意,但是大家不要忘了,My circle里面有个约束叫做默认值约束。叫做默认值约束,为什么你不给它赋值它默认值为难,那是因为它的默认值,我们当前创建一个表之后,你的字段默认的默认值,它就是耐。
04:01
所以说呢,它俩其实是有区别的,什么情况下有区别,比如说你给某个字段设置了一个默认值,然后我们当前如果你用这一种的话,那我们当前是会把这个字会把我们当前这个属性的值为nu赋值给当前的这个字段的,这个时候不管你的默认值是什么赋值的都是难,但是如果说你用的是它,大家注意我说的是什么,如果你当前你的某个属性值为难的话,它不会为它所对应的字段赋值,那不为它所对应的字段赋值,那它用的就是我们所设置的默认值,知道吧,所以说它俩其实是有一些区别的啊。好,再往下,然后这个一会咱们会给大家演示一下啊,好,这个大家注意,这是什么?叫做根据条件来查询,这个叫做根据主见来查询,什么区别跟大家说过,这只能根据主键查,这可以根据任意一个字段作为条件来查,然后这个大家再来看,这叫做update by example selective,什么意思叫做根据条件选择性修改。
05:10
然后这个叫做。根据条件来进行修改。有啥区别啊,那什么叫选择性修改,什么叫普通修改,普通修改一样的,如果我们当前咱们的EP这个对象中的某一个属性。听好了啊,某一个属性为难,那它是会将它所对应的字段修改为难的,而如果你用的是选择性修改,如果当前EP里面的某个属性的值为难,那当前它并不会去修改它所对应的字段,OK吧,所以说什么意思?如果你用的是它某个属性值为难的时候,它是会把字段修改为难的,而如果你用的是它的话,如果某个属性的值为难,那它就不会修改这个字段,OK吧,好,下面在这这叫做根据主见选择性修改一样的啊,然后这个是根据主见来修改。
06:08
跟上面咱们讲的这两个区别一样,只不过他们根这是这两个是根据主件来实现修改功能,这两个是根据任意的条件来实现修改功能,OK吧,好。那这个东西它到底该如何去用啊,比如说我们在这个位置,然后来创建一个啊测试类com.at硅谷点然后买be.test然后点咱们就叫做MBG,然后test。好,然后来加上一个注解,Public VO叫做test m BG OK,大家看一下怎么用啊,首先第一步,那你还需要获取circle session,有circle session,这不为什么,因为咱们只是把咱们逆向工程,只是帮助我们去生成了一些代码呀,所以说咱们操作买be体的过程是不变的,然后再往下叫做get map,然后来获取emp map,它所对应的代理实现类对象,然后来调用其中的方法来,比如说咱们先测试谁啊,咱们先测试这个查询,咱们先通过查询功能呢,然后告诉大家这个by example到底是干啥的。
07:23
或者说咱们可以先看它根据主件来查,那你就写个一呗,对不对,然后在这咱们获得一个emp,然后直接把它给输出,我们现在来一个执行,大家看一下,你看它好使不好使啊。行,大家来看哦。这个是咱们来看一下这报的是什么错啊。哦,他说我们当前哦,说我们的这个什么没有设置,他说类没有找到,说我们当前这个驱动没有找到,对吧?那大家看一下咱们在咱们的MBG里,这dependencecs里面确实是没有这个依赖,对吧?啊这是为什么?这是因为我们在POM点叉ML中,我记得咱们是在这个插件里面来设置了买SQ的驱动,但是我们当前咱们并没有在当前工程里面来设置这个驱动,大家说是不是?
08:20
对吧,大家看好啊,来是因为什么?是因为我们是在这个插件里面设置的驱动,咱们并没有在当前的工程的依赖中去设置这个驱动,能看懂吧?好啊,行,那咱们把它给放在咱们的笔记里面,咱们给它改一下啊,大家注意,在这咱们还需要再加上一个my circle的驱动啊。啊。行,然后下面呢,我们再来测试一下,大家看好,我们在这来一个执行,大家看啊,你看这个这个错误其实很简单,Class not phone的1EXCEPTION什么问题,很简单啊,就是你的类位找到,那类位找到,那其实就是少加包,知道吧,好,那行,那咱们现在已经改过了,大家看,你看查询出来没有啊,查询出来了只不过就是咱们现在输出的是一个内存地址,因为它给我们生成的这个EP这个实体类啊,然后这里面是没有什么的to string方法的,来咱们在这给它添加上一个to string方法就OK了啊,那下面咱们再来一个执行,大家看一下有没有问题啊。
09:24
好,大家看有没有问题,没有任何问题啊,行OK,那这是我们当前根据主件来查,那下面呢,我们再来看,比如说我们现在要根据条件来查,怎么根据条件来查呢?大家会发现这里面select的开头的方法是没有查询所有的,那我们现在要想查询所有数据怎么查,你这不根据条件来查吗?那我这写个,那它没有条件,那不查询的不就所有吗?大家说是不是对不对?list.for each,然后system.out。对吧,然后咱们再来试一下,大家看好啊,你根据条件来查,那没有条件查询出来的就是所有数据OK吧,大家看一下啊,看这个色口口区没有任何问题,后边是不是没有加任何条件,对不对?好,那如果我们现在要有条件的话,那我们应该怎么办?比如说这个咱们来测试的是什么,叫做根据ID来查询数据数据,然后这个咱们来测试的是不是应该是查询所有数据,OK,然后我们把它复制,然后注释掉,然后下面咱们再来写一个,那如果有条件呢,比如说我要来查询的是咱们的啊,员工姓名是员工姓名是张三的,那这个时候怎么查?
10:42
大家看里面这不是需要我们有一个example example对象吗?那要什么你就创建什么呗,对不对,MP example,然后1EXAMPLE等于六一个emp example是不是啊,然后我们当前咱们的升华尊享版,然后它所使用的这个查询呢,他所使用的这种方式叫什么方式,叫QBC风格的方式。
11:07
叫QBC,什么叫QBC,叫query by criterial,叫做根据条件来查询,那好,那所以说我们现在咱们既然叫叫query byial,所以说我们就需要在example里面,咱们先来创建一个条件对象,大家注意叫这个叫createial。来创建一个条件对象,然后创建完它之后,大家来看后边你就可以写条件了,直接写就行,怎么写啊看好你看这后边的方法全都是长的。长得对吧,都是一样的,都是以什么开头的,And开头的。OK吧,然后这是什么意思?你看an and gender equal to什么意思啊?然后加上在我们当前的circle语句中加上一个条件,什么条件?性别等于谁?这个叫做and age greater than什么意思?然后加上一个条件是年龄大于谁,And EP name like什么意思?然后根据EP name进行模糊查询。
12:13
然后这个是and age greater than greater than or equal to什么意思,然后大于等于OK,这剩这个,所以说大家知道这个东西你要用什么方法,大家大家想想知道该怎么找吧,首先都是以and开头的,所以说先写and,你根据哪个字段去查,然后就把他所对应的属性加上,比如说我要查询的是根据员工的姓名去查,那就是EP name OK,大家注意写到这儿了,然后下面你要怎么去查,你就要看这里面所用到的方法,所所需所用到的这个单词了,看好,Like模糊查询,Equal two等于between,就是between。就是between and的意思,知道吧,Greater than大于greater than and equal to大于等于in,就是well EP name in,这是is not nine不为空,这是is nine为空,然后这是less than小于,这是less than or equal to小于等于,这是not比between,这是not equal to不等于,这是not in,这是not like OK,完事。
13:22
非常方便。比如说我们要查询员工姓名,等于张三的,你直接在这写个张三,这就完事了,然后把咱们当前创建的example往这里面一放,大家看好啊,来,现在咱们一个执行,你会发现后边就会加上一个条件。哎,根据谁来查,根据员工姓名来查,能看懂吧,相当的方便,那个同老师,我现在我要再加一个条件,怎么加看好继续往后边点,你都没看看,这是这是这方法以什么开头的,以暗的开头的,所以说我们再往后边去写的时候,这每一个条件中间就是以and来连接的,比如说我要来查询年龄是大于大于等于20的,怎么写,And age greater than or equal two,在这里面写个20 OK,下面大家再来看啊,来一个执行。
14:19
好,大家看一下,那后边是不是又加了一个条件叫什么?求NA大于等于几大于等于20。OK吧,哎,所以说大家看你不要看它给我们生成的方法挺多,但是这个根据条件2QBC风格的这个,So,这个这个方法啊,其实用起来是非常非常方便的,OK吧,好,那有陈老师,那我现在按我会了,那关键是我该如何使用哦呀。对不对,如果说我现在有这个哦,这个条件我要查询的是谁,这个性别为男的,比如说咱们的员工姓名是张三,年龄大于等于20的,或者说是性别为男的,这个时候怎么写?看好啊来大家注意,你可不能直接在后边去写了,为什么?因为后边都是and开头的方法,那你用and的话,那我们当前的各个条件之间用的就是and来连接的,那这个时候怎么办?看好example点给大家说一个简单的方法啊,直接点哦。
15:18
直接点o.o方法,然后后边再继续,你看又变成and了,那这个时候我们上面所写的条件跟我们调用了A方法之后的条件,它们中间就会有A来连接,比如说金的equal to等于什么,等于难,OK,大家注意,这个时候我们当前上面这个条件跟下面这个条件,然后它们之间就是以O来连接的。好,下面我们在这咱们再来一个执行,大家观察一下我们当前的这个circle口啊。好,大家看一下,你看在这金得等于谁和我们上面的这个条件之间用的是不是就是O了,没问题吧,好啊,行OK,那这个是我们当前根据条件来查询,然后下面呢,咱们把这个给注释掉,然后我们在这个位置啊,咱们写一下叫做根据条件,然后来查询根据条件啊,然后来查询数据,OK,那下面呢,我们再给大家演示一个叫做选择性修改和这个普通的修改功能,添加功能的话,大家可以自己去试一下啊好,然后在这咱们来测试啊,叫做测试,什么叫测试普通修改功能,修改功能,那我们修改的时候,咱们用哪个方法,大家注意叫做map点,叫做up,咱们根据主键来修改,因为一般情况下咱们都是根据主键修改的啊,咱们先用普通的这个修改方法,这里面咱们需要传递。
16:54
进去一个emmp对象,大家看em pemp等于六一个emp它好像是没有有参构造的啊,因为这个emp它不是咱们自己写的嘛,对不对,所以说在这大家可以再加上一个有参构造,咱们就加谁呀,就加这四个就行,第一批did咱们就不加了啊好。
17:15
然后还需要再创建一个无参构造,因为大家都知道你有参构造创建出来之后就会把无参构造覆盖掉,所以说在这必须要创建一个无参构造啊,然后下面咱们怎么写呢?在这是nu第一个,然后第二个啊,不能写none啊,因为咱们现在是要修改,你根据主键修改的,那这个主件肯定是得有值的吧,比如说咱们把第一个修改一下一,然后用户名,咱们这个员工姓名,咱们给他改成是小黑对不对,然后再往下年龄,咱们给他一个什么看好啊,在这咱们给他的难,然后性别咱们给他一个女,OK,完事啊,这就是我们当前要修改的员工信息来。EP把它给放到这儿,然后现在我们来一个执行circle,大家看好,我跟大家说了啊,这是啥意思,你没有加选择性修改,就是没有那个什么selective的时候,这个方法,这叫普通修改,如果你当前你的这一个属性值为难,那它就算是他为难,他也会将我们当前咱们这个属性所对应的字段的值给修改为难,知道吧,这就是普通修改,来,下面咱们来。
18:26
测试一下大家看啊,你看这个蛇口委屈。然后这个SQ语句里面,大家看你看这个年龄修改了没有啊修改了,所以说这个时候我们来刷新,你看这个年龄就变成什么了,这个年龄是不是就直接变成难了呀,对不对,这个也变成难了是为什么?很简单,因为你第一批D_ID你没有给它赋值,你没有给这个属性赋值,它默认不也是难吗?所以说它就会把我们当前所对应的字段也修改为nine。好,但是那咱们把它给改回来,比如说这咱们写个20,这咱们还是一,然后我们来保存,然后咱们把这个方法给它注释掉,然后下面我们在这咱们再来测试一个,大家注意下面咱们要来测试的是什么,叫做选择性修改,这个咱们来测试选择性,然后选择性性。
19:19
对吧,然后修改OK,然后用哪个方法map.update by primary key selective把E放进来啊。大家注意,那我说它有什么区别,如果你当前你的属性为难的话,那它是不会修改这个属性所对应的字段的,来我们现在咱们再来一个执行,大家看啊。好,然后这个时候大家看一下,你看这里面有年龄吗?这修改字段里面修改列表里面有年龄吗?没有年龄,所以我们现在咱们再来一个刷新,你看这俩改了没有,没有改,所以大家注意这两个的效果是非常明显的,你如果用它,那我们当前某个属性值为难,那这个字段就会被修改为难,如果你用的是它,那如果咱们属性值为难,那这个字段就不会被修改。OK吧,好,那这是我们的逆向工程的奢华尊享版,非常好用啊,大家注意,但是呢,它也只是针对于咱们的单表,能够帮助我们非常方便的去操作,但是如果是我们的多表的话,那我们还是需要自己去写S口尾句,自己去写它的映射关系的,OK吧,好,这是咱们的逆向工程啊。
我来说两句