JPA利用@Modifying进行update和delete操作

本文介绍如何通过自定义JPQL语句实现update操作,并强调了使用@Modify和@Query注解的重要性。文中还提到了此类操作需在事务管理下进行,并说明了返回值类型为受影响的行数。
//可以通过自定义的JPQL语句完成update和delete操作,但是在此处的JPQL不支持insert操作
	//在@Query注解中编写JPQL语句,必须用@Modify注解修饰,通知SpringData使用update和delete操作
	//这里的update和delete操作需要使用事务,所以需要写service层
	//返回值为int类型,返回操作影响的行数
	@Modifying
	@Query("UPDATE Person p SET p.age = :age where p.name = :name")
	int updatePersonAgeByName1(@Param("age") int age, @Param("name") String name);

 

JPA的@Query注解用于在Repository接口中定义自定义查询方法。它允许你使用JPQL或SQL语句来定义查询,可以带有参数,也可以使用命名参数或位置参数。 以下是@Query注解的示例: ```java @Query("SELECT c FROM Customer c WHERE c.firstName = :firstName") List<Customer> findByFirstName(@Param("firstName") String firstName); ``` 这个示例使用JPQL语句来查询Customer实体,其中条件是firstName等于指定的值。注意,这里使用了@Param注解来指定命名参数的名称。 @Query注解还可以使用Native SQL语句来编写查询,例如: ```java @Query(value = "SELECT * FROM customers WHERE first_name = ?1", nativeQuery = true) List<Customer> findByFirstName(String firstName); ``` 这个示例使用Native SQL语句来查询customers表,其中条件是firstName等于指定的值。注意,这里使用了位置参数来指定查询参数的值,并且设置了nativeQuery参数为true,表示使用Native SQL语句。 除了基本的查询语句之外,@Query注解还支持各种查询操作,例如更新、删除计数等。以下是一些示例: ```java @Modifying @Query("UPDATE Customer c SET c.firstName = :firstName WHERE c.id = :id") void updateFirstNameById(@Param("id") Long id, @Param("firstName") String firstName); @Modifying @Query("DELETE FROM Customer c WHERE c.id = :id") void deleteById(@Param("id") Long id); @Query("SELECT COUNT(*) FROM Customer") long count(); ``` 这些示例中,@Modifying注解用于表示这是一个修改操作,而@Query注解则用于定义相应的JPQL或SQL语句。 总之,@Query注解是JPA中非常有用的注解之一,它允许你定义自定义查询方法,并且可以使用JPQL或SQL语句来定义查询。它非常灵活,可以满足各种查询需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值