00:01
我们刚才看了一下这个result type返回咱们这个集合的时候的一些用法。那么呢,咱们这个select元素还有更多的属性,哎,这些属性呢,我们基本上后来都会有用到啊,用到的时候我们用到一个说一个大家也可以结合官方文档来看。接下来我们就来看一个重要的属性,叫result map。它呢跟result type是两个非常重要的属性。而result type,它是跟我们这个自动封装有关的。我们查出数据以后,哎,你指定我要封装成什么类型,那么这个数据就给你封装成对应的这个账号类型。但是。如果说。在我们查出的这个数据中,哎,列名跟咱们这个扎B的属性名不一样,那么的话呢,我们一开始是封装不成功的。
01:00
我们的解决办法是,哎,咱们写了别名,第一种咱们写了别名。第二种解决办法,如果我们这个列名跟我们扎B的属性名符合那个驼峰命名法的这个规定,那我们就开启驼峰命名法。当然还有最后一种办法,就是使用result map叫自定义结果记我来自己来定义。咱们这个employee里边每一个属性对应哪个列。我们就来说一下这个result map说它之前啊,关于自动封装的啊,大家可以了解一下,因为我们全局属性里边有这个配置,这个配置呢,它能完成自动封装,你觉得不够了,你还能加上驼峰命名法。但是呢,更多的复杂,复杂的咱们这个封装规则,我们都是依赖于这个result map,所以说呢,它是一个非常强大而且非常重要的啊一个东西。
02:01
那么呢,我们接下来就用,嗯,咱们这个map里边写的方法太多了,这个map文件也太多了,我们来写一个新的map。还是操作employee。诶,我们这个叫plus是吧。我这个也有plus版的。然后呢,我们在它里边,我们也对应创建一个这个文件。那这个插麦文件。那在这里边来说叫employee。Plus。好两个呢,我们都叫一样的。把这个标头我们复制过来。然后我们按提示一点一点写它就行了。啊。走,有提示,好,在这个map里边进行写,哎,里边也都有提示。但是呢,我们说写这个最大的map标签,嗯,之前我们所有的增删改查都是在这个标签里加的。
03:06
然后呢,我们需要有一个name,我们跟接口绑定,Namespace一定是咱们这个接口的全利名。好,我们接下来还是定义一个查询。我们把我们这个查询,诶不是这个。我们来给这个接口里边定义一个查询。Public。返回一个employee对象。这个对象呢,Get含ID,好,我们以前是。这么来按照ID查询一个员工。好,CTRLC。我们要描述这个方法。啊,这ID就是方法名啊,返回值类型,以前我们写的是result type,返回值类型写employee就行了,我们看一下,因为全局配置里边我们还有批量起别名,好我在这个文件里边呢,我们也用一下别名。
04:15
我们就叫employee,但是我记得之前这个employee的别名,诶,被我们改了叫EP。我们就来用EP。啊。封装是没问题的。TBL-E。Well。ID等于传过来的ID值。来测试。我们在下边我们来填一个方法。填一个新的测试方法。TEST05了。零五。
05:01
好,我们hello word还是那几步,第一步先获取session factory。哎,我们先拿到它。然后呢,第二步从circle session function中open session获取到咱们这个session对象。好,第三步。我们从session中啊拿到我们这个接口。Get member来,我们现在呢,用这个employee plus好用它。啊,进行测试啊。好走,我们这一堆代码呢。啊,我们放在串里边。我们最后还要关赛。Finally。好,那这个31关。我们在这测试好,那这个plus我们来调用点get employee by,这是没问题的,我们之前就是这么来写的。
06:13
走。哎,这么来写封装正确,正确的原因,虽然我们数据库last name列没对应,因为我们开启了驼峰命名法,如果一旦驼峰命名法一关啊,那这个也就有问题了。来,我们把它可以一关,我们可以来看一下有问题。来last name就封装不上,好把它开启。那么呢,还有第二种。办法,我们来进来。在这。好,这个方法呢,原来是result type。接下来我们来说。与result type与之对应的一个东西叫result map,在这一块,Result map可以指定我们这个自定义的规则。
07:03
自定义结果及映射规则。那么这个规则就得先得有result map跟result type只能二选一用一个,你用map就别用了。把这个改掉。那么呢,怎么定义规则呢?在我们里边最外部有这个和map标签,这个标签就是自定义某个渣宾的封装规则。比如说这个扎B里边哪个属性对应哪个列,哎,我说了算。好,那这块type写什么呢?哎,Type就是要写你自定义的。规则。Java。类型。好,我们要为employee自定义规则,那么employee呢,你可以写全名,我们说有了别名以后,在任何type引用的地方,我们都可以用别名,好,这样用别名,但是呢,我们都推荐来用全名,全类名啊,让别名。
08:11
哎,一写以后真的是。太难看。不好理解,好,这样的话呢,我们就来为employee来制定它的规则。而这个规则呢,有一个ID,这个ID是一个。啊,唯一ID方便后来引用的。方便饮用。好应用,比如呢,我们就叫MYEP好。我们这个规则呢,以后返回的是MYP,而不是原来type对象,好规则怎么定?斜杠这里边呢,有第一个标签叫ID,也就是说指定主键。指定咱们这个主见点。
09:02
封装规则。这ID呢,写一个,哎,这里边有一个C,就是哪一列,我们查出来数据有ID这一列,那么呢,ID这一列我想让它对应咱们employee的ID属性,哎,接下来就是哎。Property指定对应哪个属性。Clue。指定。哪一列?然后呢,对应。对应哪一个property。指定。对应。咱们这照。属性好,这样的话呢,我们这个主见列就定义好了,那么接下来我们还用其他的啊,非主见的我们普通列可以用标签来定义。主键呢,你也可以用result定义,只不过呢,你拿ID来定义的话,马贝斯啊,知道这是一个主属性了,会在内部有。
10:05
优化规则。定义主线啊,会。底层有咱们这个优化。你要用result result来规定也没问题。而这个result它是定义普通列。定义咱们这个普通。封装规则好,我们来定义,那么呢,Column关键就是有一列叫last name,这一列对应扎B哪个属性呢?就使用property啊,对应我们Java的last name属性。当然,其他的列。其他不指定。其他不指定的列。的也会自动封装。哎,自动按照看一下列名跟我们Java being属性对应不对应,要是说呢,有的同学说,那老师是不是就只封装一个result就行了,哎,其实你也可以这么写,但是呢,我们推荐。
11:07
我们只要写result map了,我们就把全列的映射都写上。九八。全部的。呃,映射规则。都写上这样的话呢,为了方便我们啊,后来进行检查,所以说呢,我们把其他列啊,虽然你可以不写,我也继续写上。那么呢,还会查出email这一列。好,它对应email属性。其他列之所以可以不写,因为就是列名跟属性名对应的,要不对应,那肯定就得写了。真的好,这一列对应我们真的属性。啊,我自定义了一个规则,在这个规则里边指定拉内封装给他,然后用result map进行引用,我们再来测试。
12:07
好,往下走。好,还是这个方法,我们把result type我删掉了,用map走。诶,现在也是封装成功的诶。有些同学说,哎,老师你刚才那个驼峰命名好像没关,哎,这跟驼峰命名已经没多大关系了,哎,封装的时候按照我们自己的规则,我及时把驼峰这个命名法注掉。哎,它也是对的啊,因为我们定制了这个封装规则。
我来说两句