00:00
我们来说说JPQL,这节课分为这样的六小节来说,第一小节,Hollywood。JPQL是GPA查询语言的简写。JPQL除了进行查询以外,还可以进行update跟delete,那实际上他们都是通过query接口进行执行的,这个query接口跟harint那个query接口非常类似。我们可以通过entity manager的以下这三个方法来获取query接口,后边我们讲到的时候的话呢,我们再说这三个方法的区别。Qua接口的主要方法。Update这里边可以执行update跟delete get result list可以获取一个集合对象list类型的还可以是get single result获取单个值setfor result跟set marks results进行分页的harmony里边是不是也有这个方法呀?
01:07
Set h,哎,这个方法har没有。它可以设置与查询对象相关的。特定提供商的参数或提示信息,这个我们后边讲查询缓存的时候会用到这个方法,Setter有N多重载的方法,就是为那个HQL占位符设置值的,对吧?Delete,这没什么说的哈。Select from还可以使用distinct。查询所有实体。还可以使用where,对吧?Where里边有很多词句。好的,下面的话呢,我们就把这个写一下。就这些吧,Public taste hello,姐。
02:03
PQL。ADD。首先string写杠,JPQL等于from kmo c c点。Age大于问号。看到了吧,然后呢,搞一块对象注意。GPA里边的是吧,不是里边query等于nity manager.create query j p.set。零。我写一个一,得到一个集合。写错了list。
03:00
奥特斜杠找的是他吧?应该是YouTube customs等于query.get result list customers.s。数据。呃,几条记录啊。八条记录对吧。找一个。没过,为什么呢?说我这个站位符的位置不对。写于几啊,写于一呗。再来。这个过了吧,占位符的标记是从一开始,占位符的索引是从一开始。结果呢?八条记录。这就是我们。
04:03
JPQL的Hollywood看到了吧,是不是跟我们前面讲的那个HQL非常类似啊?这是获取对象。获取对象。我们当然也可以来获取。部分属性查一下,获取部分属性,Publicw test partly。获取部分属性,写一个string。JPQL等于,比方说我只获取一个car last name和car edge from customer CI where c.D等于问号。呃,大于吧,好吧,大于问号。得到的是一个list,直接写了哈,Result等于。
05:06
Nity manager.create query j pql点。Set parameter。一。ID一点。Get result list这个结果是个什么类型呢?是list类型是吧,这个list里边放的是什么类型的元素呢?看看结果。是不是?数组是不是数组啊,能想到吧,你获取了什么呀?嗯,两个元素,那这两个元素作为一条记录的话,是以一个数组出现的。那多条记录的话不就是一个数组的集合吗。默认情况下,若。
06:05
指查询部分属性。则将。返回。Object。类型的结果,如果你要是查一个值的话,那就是object结果或者object类型的list,能想到吧?这种情况不爽啊,我们希望呢,返回的是一个对象,怎么办?给它包起来。那当然,我需要提供对应的构造器吧。首先,先写一个无参的。再写一个代餐的。
07:02
取消lastname跟age。好,再走看效果能出来吗?这里边是不是一个一个的卡啊,你看有last name跟age,其他值没有获取吗?这也是可以的。也可以在实体类中创建对应的构造器,然后再JPQ。L语句中。利用。对应的构造器返回实体。类的对象,哎,通过通过一个这样的方式吧,是吧,我把那个对象给溜出来了,同时把我要查的这两个属性给它放进去了。
08:01
对吧。好的,以上呢,这两个例子可以比较好的来体现我JPQL这个hello world,我们感觉到它跟HQL啊几乎是一致的。下边呢,我们再来看一下。这样的两个方法。在前边。我们用了一个create query,那create name的query呢,就是说这个时候我们怎么办呢?我们可以把这个查询语句放这name的。Query,看见了吗?可以放这,我可以起一个名字。Cast name的query,我还可以来放一个query来写一个select c.HC点。From,就这样吧,还有一个吧,From c y c.ID。
09:07
等于问号。Fromma,就是说我用ID呢去查询一个对象。Query。拿掉看一眼。对啊。C where c.ID等于问号。诶,他给我抛了一个异常,为什么呢。他说。没有开始一个合法的ID。哦,这个时候怎么了?在这块写的话必须有select,发现了吧,没有select不行,Select c from customer c c等于什么?
10:04
这个你不用管它,那这一块的话,为什么我们看这个没写吧,但是也过了是吧,那这块写这个它必须要求有select开头。还有问题吗?The perter value is Miss from the input perter,这个是没书没事,这里边我们来进行测试,看publicw world test game的test。Query query等于NT。manager.create named query这个值叫什么呢?叫。Test name的query。复制过来点set。1ID值是二吧,有ID值是二的,没有三。
11:05
三。得到的是一个对象customer customer等于query.ga single。有一个想转看效果。走起。没问题吧,这个结果是可以获取到的,只有一个对象是吧?这应该是一个编译错误,我们不用去理会它,但是这个这块必须以select c开头,那于是呢,我拿掉保存,还有错误哈,我们看这样好不好用走。实际上也可以看见了吧,实际上也可以,不过警告这块他的确是报了这样的一个错误,但是运行的时候并不受影响。这是name的query,还有一个什么呀,叫native query,看一下public world test native query肯定是指什么呀?指本地circle吧,Circle等于select edge from。
12:23
T pas。Well。ID等于问号,我只想查h query query等于manager.create。Native query circle。点someto。三。
13:00
一一这个位置的话放三对吧。Object result等于query.get single result result result看结果。造。没过来。为什么呢?Select。再来。又没过来。Copy一下吧。Ctrl a保存。我看一眼哈。这个语法有错误,Select又写错了是吧?Select。再来。还是没过来copy。
14:06
往上翻,我们看说。这个表不存在。GPA customers不列表明吗?诶,F2复制。这个表。GPA customs。CAS哦,当时那个写错了是吧,没加S。再来。好了,这个时候这个结果是可以过的是吧,就说明这个。Native。Query适用于。本地circle,而create name的query。
15:06
适用于在实体内。前使用A。Named query标记的查询语句在这呗。是这吧,对吧,而create query是我们用的最原始的获取query的方式。OK,以上就是我们的hello,总体上讲跟har net那个HQL查询是一致的。
我来说两句