00:00
好,那我们刚才呢,咱们是讲了my be逆向工程的清新简洁版啊,然后下面呢,咱们来讲一下这个奢华尊享版。大家来看一下这个奢华尊享版呢,然后它跟咱们的清新简洁版有什么不一样啊,这个刚才呢,咱们的这个清新简洁版的这个这个呃,映射文件呢,咱们是没有看啊,大家可以简单的看一下啊,来大家看这里面首先约束跟咱们用的是一样的,对吧?然后命名空间跟咱们写的也是一样的,来保证命名空间跟map接口的全类名一样,然后在这它直接用到了一个result map,大家看一下是不是把我们当前的字段查询出来的EP_name和我们的属性EP name,然后他们两个相映射了对不对?当然这里面还有一个gd bc type,然后指的是我们数据库中这个字段的类型,大家注意啊,当然了,咱们也也是可以不写的啊。好,然后再往下的话,就是我们的这几个方法所对应的circle语句了,对吧?根据主键来进行删除,然后咱们在这儿的话,大家看它加上了一个parameter type,指的是咱们的参数类型,也就是我们当前所传输过来的参数的类型,然后是ineg类型,没问题,对吧?当然这个属性咱们可不可以不设置呀,你看我们平常咱们在写增删改查的时候,咱们都没有写过对不对,所以说这个东西咱们是可以不写的啊,好,然后再往下,这是我们的SQ语句,对吧?然后它再来获取我们当前咱们的这一个数据的时候,获取参数值的时候,它加上了我们这个字段的类型,哎,这个大家注意,咱们也可以不写,哎,好,大家看这是添加,对吧?然后这个是我们的修改,然后再往下的话,这是查询好啊。
01:47
这是根据主键来查询一个数据,这个是来查询所有数据啊行,那我们把这些东西呢,然后咱们把它先给它关掉,然后呢,大家注意,当我们重复来执行我们当前的逆向工程的时候,我建议大家把咱们之前所生成的这些东西啊,然后该删除的都把它给删掉,OK吧,都把它给删掉啊,然后把咱们的这两个实体类,然后也给它删掉。
02:15
OK,然后再把我们当前咱们的这两个map接口,然后也删掉,为什么要删掉呢?因为有的时候大家会发现啊,好,然后因为因为有的时候大家会发现,如果你重复去执行咱们的逆向工程的话,然后它有可能会往我们的配置文件中来进行追加,知道吧,会往我们的映射文件中来进行追加,所以说建议大家重新生成一次啊好,那我们现在呢,咱们要来选择不同的版本,那我们刚才所使用的是my bet3simple这个版本,然后现在我们要来使用的是MYT3这个版本啊来下面大家看好,我们现在呢,咱们同样是找到我们的my be提斯逆向工程的插件。然后我们现在来双击大家来看。
03:03
好,然后build success构建成功对吧?然后我们再来看它给我们所生成的信息,首先大家看一下,然后这个是咱们的map接口一样的,但是咱们的实体类里面是不是要比原来多了,我们的实体类中不单有咱们的EP和dept,是不是还有咱们的EP example这个类,以及de PT example这个类,对不对?那这两个是用来干什么的呢?大家注意,这两个是来实实现我们当前的条件查询的,好,然后咱们先把这些东西呢都给它关掉,然后来找到我们当前咱们的应咱们的map接口,咱们来看一下这里面都提供了什么样的方法啊,这个实体类呢,大家注意跟我们之前看到的是一模一样的,通过我们的字段名来生成相对应的属性,然后来设置get跟set方法,OK吧,好,咱们可以,咱们一会要来测试咱们的员工的这个功能啊,所以说咱们可以在这里面来生成它所对应的。
04:03
这个大家来看啊,来生成它所对应的有参构造。然后再来生成它所对应的无参构造,然后再重写一下这其中的to string方法就可以了啊好,然后咱们来看咱们的map接口,这里面提供的方法要比我们刚才看到的方法要多很多,首先呢,大家看一下,简单给大家说一下这些方法都是什么意思,首先大家只要在方法中看到了咱们的example这个单词,那它就是根据条件来进行操作,就比如说count by example什么意思叫做根据条件,然后来获取我们的总记录数。然后这个是根据条件来进行删除,这个是根据主见来进行删除,那它俩有啥区别呢?大家注意根据主见,在这大家会发现我们是不是就只写了一个什么,只写了一个EID,而如果我们要根据条件来进行删除的话,大家可以大家是可以把任意一个字段来作为条件的,OK吧,好,再往下,这是添加,然后这个叫做选择性添加,什么叫选择性添加?我给大家解释一下,选择性添加表示的就是比如说咱们上面这个是普通添加,那什么又是普通添加呢?如果我们当前传输过来的实体类对象中某一个属性的值是null,那我们的普通添加呢?直接会把null作为这个值,然后赋值给这个字段,但是如果我们所使用的是选择性添加,那它就。
05:43
只会将咱们的这些属性值不是空的这些属性,然后为相对应的字段赋值,也就是说什么意思?在这个方法里面,如果有一个属性,比如说EP name这个属性,然后是nul,那我们当前咱们的这insert这个方法所对应的circleql语句中,它也是会直接来为EP name这个字段赋值为nu的,然后但是这个的话叫做选择性添加,什么意思?如果EP内为ne nu,那它就不会出现在我们当前咱们的添加字段中,这个大家注意啊。
06:20
好,再往下,这是根据条件来进行查询。然后这个是根据主件来进行查询,好,然后根据条件大家可能不是很理解啊,这个一会儿会给大家写例子,什么叫根据条件?这个根据条件来查询,就是可以以任意字段来作为条件,而且以任意字段的所有的需求来作为条件,比如说大于大于等于小于小于等于模糊查询between and,然后还有in,还有is难,还有is not难,咱们都可以通过example来实现。这个大家注意啊,所以说为什么说它是奢华尊享版,就是因为这里面咱们通过条件来执行某一个功能的时候,咱们是可以任意字段的任意需求来作为条件的啊。
07:11
好,大家再往下看,这个呢叫做根据条件选择性修改,这个叫做根据条件来进行修改,那它俩有啥区别对吧?下面这也是修改的功能,叫根据主见选择性修改,这个叫根据主键进行修改。那什么叫选择性修改,什么叫普通修改呢?一样,如果当前某一个属性的值为null,而你使用的是普通修改,那咱们就会把这个属性所对应的字段修改为null,而如果咱们所使用的是选择性修改,如果你的这个属性值为null,那他就不会去修改这个属性所对应的字段。这个大家注意啊,对于添加功能来说,它的它的这个结果可能是一样的,对吧?因为毕竟你不给某一个字段赋值,那咱们的字段的默认值就是null,但是修改功能大家注意,普通修改和我们当前的选择性修改就不一样了,如果说你用的是普通修改,你哪怕这个属性的值为null,你也会将相对应的字段的值赋值为null,而如果我们当前用的是什么,用的是选择性修改,如果一个属性的值为null,那它所对应的字段咱们是不会进行修改的,这个大家注意啊,好一会儿都会给大家来写一个案例来测试一下。
08:37
那行,那咱们现在内容都生成出来了,咱们看一下这个映射文件吧,对吧,这个里面啊,大家也不用去看,说实话逆向工程代码生成器就是让我们实现功能的,对不对,没有必要咱们去研究一下,这里面到底是怎么写的,是不是,再说了,说实话这个也不太好看懂是不是啊,大家看一下啊。Well for each if train for each truth when对吧?里面的内容还是非常非常多的啊,所以说呢,这个大家可以自己去看一下,当然呢,咱们也没有必要去研究里面为什么这样去写啊,咱们主要是把咱们的功能实现就可以啊,行,那下面的话大家注意我们来找到咱们的核心配置文件,然后把我们的类型别名com.at硅谷点my be.pogo来设置一下,然后再把我们当前咱们的映射文件对吧?然后com.at硅谷点MY.map设置一下就可以了啊。
09:37
行,那咱们就设置完了,设置完之后下面咱们就可以来测试这个功能了啊来。首先呢,来创建一个测试类,然后叫做com.at硅谷,然后点my be.test然后点MBG,然后test。OK。好,然后下面呢,大家看好即UN的方法public void,咱们就叫做test m BG,首先咱们先来写一个查询,大家看一下,真的是非常非常的好用,非常非常的nice,非常非常的妙啊。首先呢,咱们也是要先来获取咱们的circle session对象,那咱们没有复制我们的这个工具类,那咱们就直接再重新写一遍啊好,然后先找到我们的resource,然后来读取我们当前咱们的核心配置文件,叫my be-conf叉L,好,然后来获取我们当前配置文件所对应的字节输入流,然后拆开启,OK,然后下面大家再来看另一个circle session factory build.build方法,把字节输入流放进去,获取一个circle session factory,然后再通过circle session factor的open session方法来创建咱们的session对象,来设置,自动提交好circle session。
10:59
获取到之后干什么?获取咱们的map对象叫做EP map.class OK,完事,然后下面大家看好咱们来测试的第一个功能,来查询所有数据,大家来看啊,怎么写map。
11:19
点用什么方法,大家看好了,Select开头的啊,一个叫根据条件来查询,一个叫根据主件来查询,大家说应该用哪个。应该用上面这个吧,对不对,那括号里面咱们说写的不就是条件吗?那没有条件,那你传个null,那这不就是查询所有吗?大家说对不对,对吧,然后list.for each EP so,把emp给输出行,这就这就完事了,然后下面咱们来一个执行,大家来看一下有没有效果啊。行,大家来看有没有把咱们刚才所这个EP这张表中所有的数据获取到,没有任何问题,对不对,所以说这个就是来查询所有数据,大家注意啊,那我们一个select by example,那是根据条件来查询,那没有条件查询的就是所有嘛,对不对?好把它给注释掉,然后下面大家再往下看,然后比如说那我们下面咱们要来做的是根据条件,然后来查询,对吧?那怎么根据条件查询呢?Map点用的同样是这个方法,但是咱们的条件该怎么写,简单呀,它不是要求要有一个一个EP example对象吗?那咱们就来创建呗,EP example,然后叫做example,等于六一个example,大家注意,那其实这种风格呢,叫做QBC风格,QBC风格QBC叫什么呢?叫做query back。
12:57
什么意思叫做根据条件来查询,然后咱们的条件呢,都是直接定义好,定义好的大家只需要来访问相对应的方法。
13:09
就可以在我们相对应的circle语句中生成相对应的条件,就比如说大家看好example点,叫做correct correct来创建一个条件,然后呢,咱们该加什么条件呢?大家注意点,后边所有的方法全部都是开头的,大家怎么去找这个方法呢?很简单,比如说你先把and给写上,然后呢,再找到我们当前咱们的这一个,你要把谁作为条件,这个条件这个字段所对应的属性名,大家把它给写出来,比如说咱们把员工姓名来作为条件,那就是EP name。OK吧,然后下面大家就可以自己去找了呀,你看这不是EP name between吗?Between,那不就是在什么什么之间嘛,对不对?当然呢,EP name是string类型,那咱们肯定不会用这个方法是不是?那大家但是大家再往下看,这个EQ two表示的是EP name等于谁,然后greater than表示的是大于谁,Greater than or equal to表示的是大于等于谁,然后in表示的就是well,什么什么in,然后is not难不为难,Is难为难less than小于less than or equal to小于等于like模糊查询,然后not between不在什么之间,Not equal to不等于谁,NOT1NOT like。
14:41
所以说大家来看每一个字段,你看既然有and e name,那咱们肯定有and,有and sex,然后有and email,然后还有and did did能看懂吗?所以说非常的方便,大家只需要往后去写就行,比如说。
15:03
咱们现在呢,来查询EP内,然后等于张三的。就完事儿了。然后这个时候咱们的circleq居中就有条件了,然后大家只需要把咱们的example把它给放到这儿,那我们当前查询就会以EP name,然后等于张三来作为条件来返回,值是list的集合,然后咱们在这呢,可以直接把它给输出一下,大家来看啊,好,现在我们再来一个执行,大家会发现没有任何问题,咱们来看一下我们当前咱们的这个SQ语句,大家看一下啊,好,Select咱们的各个字段from表明well emp_name等于谁等于谁等于张三,数据查出来了没查出来了。Not拉,我还是感觉到麻烦对吧?因看我要再写一个条件的话,那咱们还得在这再创建一个吗?不需要啊,对不对,大家有没有发现这点按的方法,它的返回值就是cur啊,所以说我们现在是不是可以用一个链式结构来继续往后边加条件对不对?比如说大家看好咱们在这儿来写一个什么来and。
16:17
来咱们再来写一个这个按的,然后咱们的这个年龄,然后是大于等于20的,那咱们就可以这样去写。能看懂吧?好,下面我再来一个执行,然后大家会发现这个年龄这个条件就会添加到我们当前咱们的SQ语句中来,看看A级大于等于谁。方便吧。是不是好,那有的同学又会说,老师我要如果想写A的话怎么办?来想写哦,大家这样去写example点,大家会发现这里面是不是直接有个O方法呀,是不是,然后咱们通过O方法,然后再点之后,大家看是不是又是and的开除的条件呢?所以说这个时候大家会发现我们上边所写的条件和我or方法之后所写的条件,它们之间就是用O的关系来连接的。
17:10
来点什么?然后点,比如说and dad dad not nine is not nine什么意思?我现在来获取的除了姓名等于张三,年龄大于等于20之外,然后还要来获取的是我们的dad不为空的,也就是有部门信息的这些员工能看懂吧?好,下面我们再来一个执行,大家来看一下啊,好。来大家看一下这个circle,然后这两个条件是不是括起来加了一个and,然后这个条件,然后是不是在这就加了一个哦,能看懂不?这个条件和咱们的这个条件中间就是用or来连接的。所以说大家看好了,没有任何问题,所以说咱们的这个奢华尊享版的话,大家是可以通过任意的字段,以任意的需求来作为条件进行咱们的查询,删除以及修改的。
18:09
OK吧,因为添加不需要加条件对不对,这样的啊,好,所以说这个就是我们的两个查询功能,一个查询的是没有条件的啊,一个查询的是没有条件查询所有数据,然后一个来是根据我们所指定的条件来进行查询的,OK吧,那这个时候咱们还需不需要自己去写什么啊,还需不需要自己去写咱们的什么动态circle了,不需要,大家只要按照我们当前咱们的这一个要求去写就没问题。OK吧,好行。
我来说两句