当前位置: 首页 > news >正文

ing Data JPA 派生方法 数据操作速查表

📘 Spring Data JPA 速查表


🔍 1. 查询(Query Methods)

派生方法支持 find / read / get 开头。

关键字示例方法SQL 效果
findByfindByName(String name)where name = ?
And / OrfindByNameAndAge(String n, int a)where name = ? and age = ?
BetweenfindByAgeBetween(int s, int e)where age between ? and ?
LessThan / GtfindByAgeLessThan(int max)where age < ?
LikefindByNameLike(String n)where name like ?
ContainingfindByNameContaining(String k)where name like %?%
StartingWithfindByNameStartingWith(String p)where name like '?%'
EndingWithfindByNameEndingWith(String s)where name like '%?'
In / NotInfindByIdIn(List<Long> ids)where id in (?)
IsNull / NotNullfindByDeletedAtIsNull()where deleted_at is null
True / FalsefindByActiveTrue()where active = true
IgnoreCasefindByNameIgnoreCase(String n)lower(name) = lower(?)
OrderByfindByOrgIdOrderByCreatedAtDesc(id)order by created_at desc
Top / FirstfindTop10ByOrderByScoreDesc()limit 10
DistinctfindDistinctByOrgId(String org)select distinct …

✍️ 2. 插入 & 更新(Insert / Update)

JPA 没有专门的派生 insert / update 方法,但常见方式有:

2.1 save / saveAll

repo.save(entity);         // 插入或更新
repo.saveAll(list);        // 批量插入或更新
  • insert:主键不存在 → 插入
  • update:主键存在 → 更新

2.2 @Modifying + @Query(手写更新)

@Modifying
@Query("update User u set u.status = ?2 where u.id = ?1")
int updateStatus(Long id, int status);

👉 适合更新部分字段。

2.3 批量更新

  • saveAll() 内部循环调用 SQL(不是原生批量)
  • 真正批量更新 → 建议 @Modifying @QueryJdbcTemplate / 批量 SQL

🗑️ 3. 删除(Delete)

3.1 单个 / 按条件删除

方法名SQL 效果
deleteById(Long id)delete from table where id = ?
deleteByUserId(String uid)delete from table where user_id=?
deleteByStatus(int s)delete from table where status=?
deleteAllByOrgTag(String o)delete from table where org_tag=?

⚠️ 注意:deleteByXxx 直接生成 DELETE SQL,不会触发 @PreRemove 等生命周期回调。

3.2 批量删除

repo.deleteAllInBatch();                 // 清空表
repo.deleteAllByIdInBatch(List<ID> ids); // 按主键批量删
repo.deleteAll(list);                    // 循环删除(逐条)

⚡ 4. 批量处理总结

操作推荐方法特点
批量插入/更新saveAll(list)内部逐条 SQL,非真正批量
批量更新@Modifying @Query / 原生 SQL高效,支持部分字段更新
批量删除deleteAllInBatch() / deleteAllByIdInBatch()直接批量 delete,效率高

✅ 5. 实战推荐

  • 查询findByXxx(简单) + @Query(复杂)
  • 插入/更新save / saveAll
  • 删除deleteByXxx(单条件) / deleteAllInBatch(批量)
  • 部分字段更新@Modifying @Query
  • 真正大批量 → 建议走 JdbcTemplate 或原生 SQL(性能更好)

http://www.dtcms.com/a/359873.html

相关文章:

  • TFS-1996《The Possibilistic C-Means Algorithm: Insights and Recommendations》
  • Kafka面试精讲 Day 3:Producer生产者原理与配置
  • K8s学习笔记(一)——
  • Unity转抖音小游戏重点摘记
  • 通信原理(006)——分贝(dB)超级详细
  • 【数学史冷知识】关于行列式的发展史
  • spring-ai-alibaba-deepresearch 学习(七)——源码学习之PlannerNode
  • (树)Leetcode94二叉树的中序遍历
  • 8.29学习总结
  • YOLO 目标检测:YOLOv2基本框架、多尺度训练、锚框、维度聚类、位置预测、passthrough
  • 【机器学习基础】无监督学习算法的现代演进:从数据探索到智能系统的自主发现能力
  • hardhat 3 测试框架选择
  • 十分钟快速掌握 YML YAML 文件
  • LLM记账智能体-MCP服务-实现步骤与效果展示
  • Qt精华版打包教程,支持windows和Linux,每种平台支持2种方案
  • MCP SDK 示例一
  • Spring MVC 九大组件源码深度剖析(六):HandlerExceptionResolver - 异常处理的艺术
  • 第八章 光照
  • 蓝牙AOA智慧仓储管理系统:实现仓储数字化升级的精准定位解决方案
  • 解决IDEA 2025.2升级报错:Scannning Files to Index卡住问题分析与修复
  • python复杂代码如何让ide自动推导提示内容
  • 【系列12】端侧AI:构建与部署高效的本地化AI模型 第11章:边缘设备与IoT部署
  • Wi-Fi技术——网络安全
  • 现代软件系统架构:前端、后端、数据库、部署、算法与AI学习的结构与交互分析
  • 学习:uniapp全栈微信小程序vue3后台(8)
  • USB虚拟化应用5:VirtualFIDO2 虚拟硬件安全密钥,智能卡,yubico,支持X,FB,GITHUB等各种网站双重认证,让你的账户登录绝对安全
  • LeetCode 1855.下标对中的最大距离
  • a3002盘式制动器刹车cad➕三维图➕设计说明书
  • DreamForge
  • leetcode 268 丢失的数字