罔谈彼短,靡恃己长。|

onejay

园龄:3年8个月粉丝:0关注:0

【JPA】@Modifying 注解

工作中看到JPA中有一个@Modifying的用法,故此记录一下

JDK1.8

Springboot2

JPA

Oracle

 

之前一直用的是这样的写法:

1
2
3
4
5
6
7
8
9
10
String updateQuery = "UPDATE user SET name = :name WHERE id = :id";
EntityManager entityManager = entityManagerFactory.createEntityManager();
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
Query query = entityManager.createNativeQuery(updateQuery);
query.setParameter("name", newName);
query.setParameter("id", id);
query.executeUpdate();
transaction.commit();
entityManager.close();

或者是这样的写法:

1
2
3
4
User user = new User();
user.setId(id);
user.setName(newName);
userRepository.save(user); // userRepository 通过构造器注入

  

 

 

使用@Modifying

1
2
3
4
5
6
7
8
9
10
11
12
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
 
  @Modifying
  @Query("update User u set u.name = ?1 where u.id = ?2")
  void updateUserNameById(String name, Long id);
   
  @Modifying
  @Query(value = "UPDATE users SET name = :name WHERE id = :id", nativeQuery = true)
  void updateUserNativeQuery(@Param("name") String name, @Param("id") Long id);
 
}

 

本文作者:onejay

本文链接:https://www.cnblogs.com/onejay/p/17253582.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   onejay  阅读(464)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起