Spring Data JPA 从入门到精通~@Modifying修改查询
学习思路一样,我们先看源码:
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修改查询相关推荐
- Spring Data JPA 从入门到精通~方法的查询策略的属性表达式
方法的查询策略的属性表达式(Property Expressions) 属性表达式只能引用托管(泛化)实体的直接属性,如前一个示例所示.在查询创建时,已经确保解析的属性是托管实体的属性,但是,还可以通 ...
- Spring Data JPA 从入门到精通~方法的查询策略设置
方法的查询策略设置 通过下面的命令来配置方法的查询策略: @EnableJpaRepositories(queryLookupStrategy= QueryLookupStrategy.Key.CRE ...
- Spring Data JPA 从入门到精通~@Version处理乐观锁的问题
@Version 处理乐观锁的问题 @Version 乐观锁介绍 我们在研究 Auditing 的时候,发现了一个有趣的注解 @Version,源码如下: package org.springfram ...
- spring data jpa从入门到精通_Spring Data JPA的简单入门
前言 spring data JPA是spring团队打造的sping生态全家桶的一部分,本身内核使用的是hibernate核心源码,用来作为了解java持久层框架基本构成的样本是再好不过的选择.最近 ...
- Spring Data JPA 从入门到精通~Naming命名策略详解及其实践
Naming 命名策略详解及其实践 用 JPA 离不开 @Entity 实体,我都知道实体里面有字段映射,而字段映射的方法有两种: 显式命名:在映射配置时,设置的数据库表名.列名等,就是进行显式命名, ...
- Spring Data JPA 从入门到精通~默认数据源的讲解
默认数据源 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://1 ...
- Spring Data JPA 从入门到精通~Auditing及其事件详解
Auditing 及其事件详解 Auditing 翻译过来是审计和审核,Spring 的优秀之处在于帮我们想到了很多繁琐事情的解决方案,我们在实际的业务系统中,针对一张表的操作大部分是需要记录谁什么时 ...
- Spring Data JPA 从入门到精通~实际工作的应用场景
在实际工作中,有哪些场景会用到自定义 Repository 呢,这里列出几种实际在工作中的应用案例. 1. 逻辑删除场景 可以用到上面说的两种实现方式,如果有框架级别的全局自定义 Respositor ...
- Spring Data JPA 从入门到精通~自定义实现Repository
EntityManager 的获取方式 我们既然要自定义,首先讲一下 EntityManager 的两种获取方式. 1. 通过 @PersistenceContext 注解. 通过将 @Persist ...
最新文章
- Struts2请求参数合法性校验机制
- Linux下的Nano命令
- 实数是不是python数据类型_Python数据类型之数字(Numbers)和运算符
- QDoc文字标记textmarkup
- 最近面试,笔试题中的一道sql题
- .net 小问题集合
- org.springframework.dao.InvalidDataAccessApiUsageException
- 怎样设计访谈提纲_服务设计简史
- JS执行一次任务与定期任务与清除执行
- NSURLConnect 的简单实用(iOS8淘汰)
- PS中抠图的几种方法简介
- 订单量排行 php,订单量增速最快B2C电商未来电子商务的趋势网站
- 【Pytorch编程】Pytorch-Ignite v0.4.8的安装以及简单使用
- Win11隐藏文件怎么取消隐藏
- import java.sql.*;问题:The package java.sql is not accessible
- 快速下载||AnotherRedisDesktopManagerMedis-Redis可视化工具
- iPhone越狱开发环境搭建
- 今日早报 每日精选12条新闻简报 每天一分钟 知晓天下事 8月9日
- 车路协同自动驾驶研究
- 论述人工智能在电气工程自动化中的运用
热门文章
- 非常全面的阿里的Java面试题目,涵盖Java基础+高级+架构
- Java经典基础与高级面试36题和答案
- 论文浅尝 | 二维卷积知识图谱嵌入
- 新闻文本内容知识图谱表示项目
- 翻译:A DSL in 5 Languages(五种语言的DSL)
- 数字化转型知识方法系列之三:以价值效益为导向推进数字化转型的五大重点任务
- 软工 课堂作业:选出一个整数组中最大子数组
- 一个项目中说系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构...
- [改善Java代码]若有必要,使用变长数组
- MVC3学习 八 Action和result过滤器及日志处理