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

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.xdnf.cn/news/19505.html

相关文章:

  • 【WEB】[BUUCTF] <GXYCTF2019禁止套娃>《php函数的运用》
  • ADC platfrom day65
  • MVC架构模式
  • Blender建模:对于模型布线的一些思考
  • 介绍GSPO:一种革命性的语言模型强化学习算法
  • 现代C++性能陷阱:std::function的成本、异常处理的真实开销
  • Luma 视频生成 API 对接说明
  • AI 智能体汇总,自动执行任务的“真 Agent”
  • 查看所有装在c盘软件的方法
  • Trae接入自有Deepseek模型,不再排队等待
  • OpenStack 03:创建实例
  • 并发编程——11 并发容器(Map、List、Set)实战及其原理分析
  • Opencv的数据结构
  • wifi控制舵机
  • AI热点周报(8.24~8.30):Grok 2.5开源,OpenAI Realtime正式商用,Meta或与OpenAI或Google合作?
  • 从零开始的python学习——语句
  • python pyqt5开发DoIP上位机【自动化测试的逻辑是怎么实现的?】
  • lumerical_FDTD_光源_TFSF
  • 《中国棒垒球》垒球世界纪录多少米·垒球8号位
  • 第2.3节:AI大模型之Claude系列(Anthropic)
  • [特殊字符]️ STL 容器快速参考手册
  • LangChain实战(五):Document Loaders - 从多源加载数据
  • Python库2——Matplotlib2
  • JAVA EE初阶 4:文件操作和IO
  • PCIe 6.0 vs 5.0:带宽翻倍背后的技术革新与应用前景
  • 防护墙技术(一):NAT
  • 粒子群优化算法(PSO)
  • 从分子工具到技术革新:链霉亲和素 - 生物素系统与 M13 噬菌体展示的交叉应用解析
  • 项目管理方法适用场景对比
  • 每k个节点一组反转链表