学习思路一样,我们先看源码:

public @interface Modifying {
//如果配置了一级缓存,这个时候用clearAutomatically=true,就会刷新hibernate的一级缓存了, 不然你在同一接口中,更新一个对象,接着查询这个对象,那么你查出来的这个对象还是之前的没有更新之前的状态。这个比较适合老Hibernate的开发的程序员。boolean clearAutomatically() default false;
}

可以通过在 @Modifying 注解实现只需要参数绑定的 update 查询的执行,我们来看个例子根据 lastName 更新 firstname 并且返回更新条数如下:

@Modifying
@Query("update User u set u.firstname = ?1 where u.lastname = ?2")
int setFixedFirstnameFor(String firstname, String lastname);

简单的针对某些特定属性的更新,也可以直接用基类里面提供的通用 save 来做更新(即继承 CrudRepository 接口)。

还有第三种方法就是自定义 Repository 使用 EntityManager 来进行更新操作。

对删除操作的支持如下:

interface UserRepository extends Repository<User, Long> {void deleteByRoleId(long roleId);@Modifying@Query("delete from User u where user.role.id = ?1")void deleteInBulkByRoleId(long roleId);
}

所以现在我们一共有四种方式来做更新操作:

  • 通过方法表达式(method name query),上篇内容已介绍;
  • 还有一种就是 @Modifying 注解;
  • @Query 注解也可以做到;
  • 继承 CrudRepository 接口。

Spring Data JPA 从入门到精通~@Modifying修改查询相关推荐

  1. Spring Data JPA 从入门到精通~方法的查询策略的属性表达式

    方法的查询策略的属性表达式(Property Expressions) 属性表达式只能引用托管(泛化)实体的直接属性,如前一个示例所示.在查询创建时,已经确保解析的属性是托管实体的属性,但是,还可以通 ...

  2. Spring Data JPA 从入门到精通~方法的查询策略设置

    方法的查询策略设置 通过下面的命令来配置方法的查询策略: @EnableJpaRepositories(queryLookupStrategy= QueryLookupStrategy.Key.CRE ...

  3. Spring Data JPA 从入门到精通~@Version处理乐观锁的问题

    @Version 处理乐观锁的问题 @Version 乐观锁介绍 我们在研究 Auditing 的时候,发现了一个有趣的注解 @Version,源码如下: package org.springfram ...

  4. spring data jpa从入门到精通_Spring Data JPA的简单入门

    前言 spring data JPA是spring团队打造的sping生态全家桶的一部分,本身内核使用的是hibernate核心源码,用来作为了解java持久层框架基本构成的样本是再好不过的选择.最近 ...

  5. Spring Data JPA 从入门到精通~Naming命名策略详解及其实践

    Naming 命名策略详解及其实践 用 JPA 离不开 @Entity 实体,我都知道实体里面有字段映射,而字段映射的方法有两种: 显式命名:在映射配置时,设置的数据库表名.列名等,就是进行显式命名, ...

  6. Spring Data JPA 从入门到精通~默认数据源的讲解

    默认数据源 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://1 ...

  7. Spring Data JPA 从入门到精通~Auditing及其事件详解

    Auditing 及其事件详解 Auditing 翻译过来是审计和审核,Spring 的优秀之处在于帮我们想到了很多繁琐事情的解决方案,我们在实际的业务系统中,针对一张表的操作大部分是需要记录谁什么时 ...

  8. Spring Data JPA 从入门到精通~实际工作的应用场景

    在实际工作中,有哪些场景会用到自定义 Repository 呢,这里列出几种实际在工作中的应用案例. 1. 逻辑删除场景 可以用到上面说的两种实现方式,如果有框架级别的全局自定义 Respositor ...

  9. Spring Data JPA 从入门到精通~自定义实现Repository

    EntityManager 的获取方式 我们既然要自定义,首先讲一下 EntityManager 的两种获取方式. 1. 通过 @PersistenceContext 注解. 通过将 @Persist ...

最新文章

  1. Struts2请求参数合法性校验机制
  2. Linux下的Nano命令
  3. 实数是不是python数据类型_Python数据类型之数字(Numbers)和运算符
  4. QDoc文字标记textmarkup
  5. 最近面试,笔试题中的一道sql题
  6. .net 小问题集合
  7. org.springframework.dao.InvalidDataAccessApiUsageException
  8. 怎样设计访谈提纲_服务设计简史
  9. JS执行一次任务与定期任务与清除执行
  10. NSURLConnect 的简单实用(iOS8淘汰)
  11. PS中抠图的几种方法简介
  12. 订单量排行 php,订单量增速最快B2C电商未来电子商务的趋势网站
  13. 【Pytorch编程】Pytorch-Ignite v0.4.8的安装以及简单使用
  14. Win11隐藏文件怎么取消隐藏
  15. import java.sql.*;问题:The package java.sql is not accessible
  16. 快速下载||AnotherRedisDesktopManagerMedis-Redis可视化工具
  17. iPhone越狱开发环境搭建
  18. 今日早报 每日精选12条新闻简报 每天一分钟 知晓天下事 8月9日
  19. 车路协同自动驾驶研究
  20. 论述人工智能在电气工程自动化中的运用

热门文章

  1. 非常全面的阿里的Java面试题目,涵盖Java基础+高级+架构
  2. Java经典基础与高级面试36题和答案
  3. 论文浅尝 | 二维卷积知识图谱嵌入
  4. 新闻文本内容知识图谱表示项目
  5. 翻译:A DSL in 5 Languages(五种语言的DSL)
  6. 数字化转型知识方法系列之三:以价值效益为导向推进数字化转型的五大重点任务
  7. 软工 课堂作业:选出一个整数组中最大子数组
  8. 一个项目中说系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构...
  9. [改善Java代码]若有必要,使用变长数组
  10. MVC3学习 八 Action和result过滤器及日志处理