00:00
下面呢,我们来说一下在spring中。定义方法的规范什么意思呢?就是说我们在这个report b里边啊,如何去定义方法。前边我们声明了一个get by last name被证实好用了,于是我们再声明一个,比方说taste。好。从语法的角度,这样写肯定是没问题的,是吧?CTRLS保存,我们发现它会报一个编译时的错误,什么错误呢?他说这是一个不合法的查询,因为在person里边没有property这个属性。所以说我们得到第一个结论。在。Reposity。Reps子接口中。
01:06
声明方法第一个不是随便声明的,而需要符合一定的规范。第二个。符合什么规范呢?就错了哈,干掉了。看PPT,如果要是查询的话,我们需要以find read get开头。如果有查询条件的话,我们需要。使用spring给我们提供的关键字进行连接,而且那个属性的首字母必须使用大写。CTRLC复制一下。查询的话,方法必须以find read get开头,如果涉及查询条件是要需要使用关键字进行连接。
02:11
涉及属性的话,属性首字母需要写成大写。好,我们看。哎。以get开头。我这里边的话呢,只有一个什么呀,是不是只有一个lastname啊,所以lastname首字母变成大写,我们看一看spring给我们提供了哪些关键字。有这么多看and or,这是连接多个查询条件的。Between less than greater than before是做数值跟日期比较的。It now it now,这两个是什么呀?是否为空的?Like no like starting with ending withing去做那个模糊查询的order by排序。
03:05
Not取反in no in是取那个呃,In的那个条件的是吧?True跟false我们不打算一个一个讲,我们来写两个例子,大家体会一下。首先呢,我想写这样的一个效果。威尔。Last name。Mike。注意哈,Like什么呢?Like这样的一个效果。就是说以什么什么开始叫starting with。然后and。ID小于多少?看见了吧。小于多少?OK,我返回一个集合,Person。Last。这应该是以什么?
04:08
比什么什么小。来赞。Last name in类型的ID保存,哎,这就是我们写的一个效果看。Lastname starting with,就是说以这个开始,And ID less than,比这个只要小,我来修改一下我的这个数据表哈。呃,以什么什么开始,比方说我们比十小,比十小呢,XX以XX开始,把这个改为X好。看一下我们的效果。测试一下,我做这个测试的话呢,我需要把这个personposy作为什么呀,作为这个成序变量,因为我下一个方法测试方法也需要用到它,Private等于now。
05:03
然后把这一段拿过来,把这一行可以删掉。Public world。Was。T。看一看效果。Presence等于。report.gap长的这个是吧,我要以XX。开始同时呢,ID小于十。Sit out。Person。找一个。啊,答案只有一个XX,看清楚看,看清条件了吧,那我要是想把这个也包含呢?我可以说以什么什么结尾,或者是containing X都可以吧,我把这个给他。
06:10
再写一个CTRLC过来,我们说我们说。以这个这个结尾ending位吧。Ending with。再找一个看效果。CTRLC。Get by ending with这个。再走。这个时候你看是不是两个呀,上面那个一个这个结果还在,哎,这又是一个查询,那这个呢,就是这样的一个效果。好的,咱再写一个用or连接的起这样一个效果,Well。
07:06
Email in。哦,B。小于多少,好的list。Person。Get by email in all birth小于赞。Listreda emails date。保存。看一下这个效果。啊,不是这个是吧,它。等于点get。
08:05
email.as list,我们来写几个哈,我们看一眼啊,AFS。AA。A、硅谷点。com。CRC。FF。SS。嗯。New date six person.S打一个s controll o找一个。
09:00
大家注意这个结果是不是26啊。为什么呀?因为我现在的这个系统时间比这个都大,如果我要是把这个连接改为end的话。And,怎么了?它就只能返回三条记录了,是不是就是我既要满足这个in,又要满足它再找?哦,对,出错了是吧。这应该是end。走起。没问题吧,这个是and OK,这就是我们这块说的这个关键字,嗯,其他的关键字呢,跟我们现在举这个呀差不多,大家可以自己去这个呃,练习一下。好的。但这块呢,可能会有一些问题,同学也看到了是吧,用这个关键字去写这个查询方法是不是很麻烦呢?
10:02
而且这个方法的话呢,也会比较长,还有一个它并不能够足够的灵活,因为你毕竟需要满足一定的规范才可以,所以说在后边呢,我们是支持自己去写那个JPQL的,就是说使使用那个什么使用这个宽注解这个呢,下节课说。我们还是先来说这个,呃,使用关键字的方式进行解析,这个呢可能会有一些小问题,什么问题呢?我们来举这样的一个例子哈,我们让这个person有一个属性叫address。Address里边呢,增加三个属性,ID province省。
11:00
City是。写个g settle。CTRLCF格式化。这个做成一张数据表,Entity。Table name GPA oasis。Generated value,然后在这个person里边呢,我加这样的一个属性。Get settle。这个时候应该是什么呀?Money two one。多个person可以对应的一个地址,我们需要写一个John column name叫a dress ID。
12:05
先去生成对应的数据表。我们直接跑这个空的方法就可以了。好,没问题。F5刷新一下。这是addresses,这打开啊,ID也有了,好了数据表生成,生成之后的话呢,我想来做一个什么查询呢,我想来做一个使用。啊,Address的ID进行了一个查询,那ID呢,这时我就不填了哈,我们只是看一下那个SQL语句就可以。这应该是一个什么呀,应该是一个叫级联查询。或者说我们在写的过程中容易出现错误的一个地方。He PI he was too。At,好。
13:03
我想来做这样的一个查询过来。Well。我说是什么呀。我们希望的是email。A person address的ID。Addressed ID大于多少?看见了吧,Person addressed ID大于多少那。怎么写呢?List get address的ID大于。GTZ。Intel类型的ID。注意看这个写法哈,这是一个极点属性是吧。Address的ID greater than。走起,List person。
14:06
Person等于person report.get。我写一个一也无所谓哈,因为我们这个里边的话呢,并没有对应的记录,我们只是看。看SQL语句就。可以了,走起。我们看思考。向上一点,大家看它是不是做了一个主要链接啊是吧,同时让这个ID大于没问题吧,哦,它支持几点查询。五支持属性的级联查询,这个很好。但是咱要说的呢,还有另外一个事儿。另外一个事是这样的,大家看我如果我如果我这个person里边啊,我自个儿有这样的一个属性。
15:14
Get settle。同学会说,是吧,老师,你这不是找事儿吗?这里边儿这叫address ID,然后的话呢,你这个address还有一个ID,你查的时候它不会有问题吗。我们说的就是这个问题应该如何进行解决,我们再跑一下看看效果。这跑的话呢,他给我报了一个错。说不能够创建nity manager factory,我没有写get吗?我叫拉。Get,写好了那啥问题呢?
16:01
我把这个错误给他。复制出来。看一眼。他说什么呀,他说我这个address ID进行映射的时候啊,这个列名重复了是这个意思吧,我这个address ID在映射的时候的话呢,这个默认的列名也叫address_ID那我来重新定义一个名字。Name等于address。ID。好吧,再看。诶,这个结果OK了,不过这个时候我们看怎么了,这个时候的话呢,它用的这个查询条件是。
17:01
Addressed ID,换句话说,换句话说,这个时候我们过来看它哈,叫get by address ID,它会优先使用。当前类的属性,而不是几点属性。若当前类有符合条件的属性,则。优先使用而不使用什么呀。级联属性看见了吧,那么我如何保证用级联属性呢?落需要使用级联属性,则属性之间使用下划线进行连接,什么意思啊,我想用级联的,那我就。这样写。
18:01
Address ID找一个。走起,再看我们的查询。大家看是不是又开始连表了呀?哎,这就是我们需要注意的一个环节。首先,他支持吉联。然后呢,为了不发生奇异的话,那个极点属性,我们建议大家使用下划线去。连接一下。好,以上就是我们讲的。在reportsy定义方法规范的事儿。
我来说两句