00:00
下边我们来说一下modifying这个注解,打开我们的程序,前面我们写的这些方法呀,实际上都是跟查询相关的方法,对吧?那有一个问题就是用spring data能做添加、删除跟修改吗?答案是可以的,有两种方式可以完成,第一种方式我们可以利用PRY子接口给我们提供的。对应方法来完成添加删除跟修改,这个的话呢,后边说另外一种方式,我们也可以使用定制化GPQL的方式来实现。删除跟修改,注意没有添加,因为JPQL它不支持insert是吧。我们来来看一个例子,Update email。我要去根据ID去更新用户的email。
01:08
问题出来了,那个JPQ号写在哪啊?当然是写在这个qua里边,看着update person p set p.email等于email where ID等于ID,这个时候呢?一会儿需要加一个参数名去映射一下,这个叫ad。这个叫。方法写完了可以用吗?咱试试哈。Public VO test modifying。
02:00
实际上你应该能想到是吧,这个注解还没用呢,咱这个方法呀,够呛能使用。Res update1把一改为。At硅谷点com看四个M,现在我这个一呢是两个M。我们来跑一下,看看效果,走起。没过吧,诶抛了一些异常出来看一看,这个异常是什么问题呢?看这个cos by。他说怎么了,他说我这个query操作呀,不支持DML,就是说这个时候他做不了这个更新怎么办呢?加上一个猫翻注解告诉我要修改了再找。
03:03
哎,这个时候呢,又有异常,但这个异常啊,跟先前那个异常已经不一样了,大家看一眼,这个异常是说我进行update跟de的时候,我需要有事物,我需要事物,那么这个事物通常情况下我们加在四上边吧,所以说我来定义一个。Person service。加一个注解。Servicet auto。Public world update。Person email。String email ID。
04:01
A。传sectional调person re的update方法,先传ID,再传email。好的,我们再试效果哦,这个应该是什么类型啊,In类型,好了我们再试,这里边需要注意一下哈,我前边我定义这个,我编写这个spring配置文件的时候呢,我并没有加搜什么的包,这需要加上配置自动扫描的包,否则的话怎么了,否则的话这个person service虽然加这个注解了,但它却不能被纳入到LC容器里边,对吧。Context component scan。com.at硅谷spring,好的,这个时候这个S呢,就加上了,我们再进行测试private service。
05:07
Person service等于Ctx.bin person service.class好。这个不行,咱看看下边的吧,点update。哦,这先是email,后是ID。Copy一下CTRLC再来。走起。OK,这个时候呢,测试通过,同时我们看见了update。过来刷新一下。改了吧,所以说这个时候这个修改就成功了。我们先写一点注释,然后的话呢,有一些问题需要解答一下。过来说。啊,可以。
06:01
通过自定义。自定义的JPQ。完成。Update和delete操作,注意一下JPQL不支持。使用insert就不支持我们平常那个insert into那个方式。再来说。在qua注解中。编写JPQL语句。但必须使用mod反应注解进行修饰。已通知。
07:06
Spring。这是一个。Update或delete操作,然后再要。Update或delete操作需要。雄树。此时。需要定义service层,在service层的方法上添加事物调整好的,这就是modifying。
08:00
这块有一个问题,同学说,诶,我前面查询的时候。我也没加事物,它也好用了呀,为什么我到修改的时候它需要加事物了呢,好的。说一个需要注意的地方哈,默认情况下的每个方法上有事物,但都是一个只读事物,他们不能完成修改操作,看见了吧,我前面这些都是只读的。可以做修改的时候必须需要一个。啊,非只读的事物过来,所以说这个时候我们需要去定义service,而且添加事物操作。猫的翻映注解和事物,呃,两页PPT大家可以参看一下。
我来说两句