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

Spring Data JPA 派生查询方法命名速查表

Spring Data JPA 派生查询方法命名速查表

🚀 1. 基本结构

findBy + 属性名 + [运算符] + [And/Or + 其它条件]

📝 2. 常见关键字

(1)精确匹配

关键字示例生成的 SQL
findByfindByUserId(String id)WHERE user_id = ?
findBy...And...findByFileMd5AndUserId(String f, String u)WHERE file_md5 = ? AND user_id = ?
findBy...Or...findByNameOrEmail(String n, String e)WHERE name = ? OR email = ?

(2)比较运算

关键字示例SQL
LessThanfindBySizeLessThan(Long size)<
LessThanEqualfindBySizeLessThanEqual(Long size)<=
GreaterThanfindBySizeGreaterThan(Long size)>
GreaterThanEqualfindBySizeGreaterThanEqual(Long size)>=
BetweenfindByCreatedAtBetween(Date d1, Date d2)BETWEEN ? AND ?

(3)模糊匹配

关键字示例SQL
LikefindByNameLike(String n)LIKE ?
ContainingfindByNameContaining(String n)LIKE %?%
StartingWithfindByNameStartingWith(String n)LIKE ?%
EndingWithfindByNameEndingWith(String n)LIKE %?

(4)空值/布尔

关键字示例SQL
IsNullfindByOrgTagIsNull()IS NULL
IsNotNullfindByOrgTagIsNotNull()IS NOT NULL
TruefindByIsPublicTrue()is_public = true
FalsefindByIsPublicFalse()is_public = false

(5)排序 / 限制

关键字示例SQL
OrderByfindByUserIdOrderByCreatedAtDesc(String id)ORDER BY created_at DESC
FirstfindFirstByOrderByCreatedAtDesc()LIMIT 1
TopfindTop3ByStatusOrderByCreatedAtDesc()LIMIT 3

(6)集合 / In 查询

关键字示例SQL
InfindByUserIdIn(List<String> ids)user_id IN (?)
NotInfindByUserIdNotIn(List<String> ids)user_id NOT IN (?)

🎯 3. 小技巧

  1. 返回类型

    • List<Entity> → 多个结果
    • Optional<Entity> → 单个可空结果
    • Entity → 单个结果(可能 NPE,不推荐)
    • Page<Entity> → 分页
    • Slice<Entity> → 游标式分页
  2. 复杂查询 → 如果命名太长,最好用 @Query 注解写 JPQL/SQL。


✅ 总结:
findByFileMd5AndUserId(...) 就是 派生查询,属于最常见的命名规则。
以后写 Repository 方法,就按这个表组合单词,Spring Data JPA 会自动帮你生成 SQL。

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

相关文章:

  • 【51单片机】【protues仿真】基于51单片机智能晾衣架系统
  • git中使用SSH的配置
  • 从零开始搭建使用 TDengine:新用户快速上手指南
  • STAR法则
  • Encoder编码器
  • kafka服务端架构总览
  • sublime MAC系统快捷键及常见问题
  • 深入理解Nginx反向代理及其应用
  • 【机器学习学习笔记】numpy基础
  • Library cache lock常见案例分析(一)
  • TensorFlow 面试题及详细答案 120道(81-90)-- 其他框架/工具
  • 【重学MySQL】九十三、MySQL字符集与比较规则完全解析
  • 标定分享3--lidar与rtk/ins标定外参工程实现分享
  • SciPy
  • 【MLLM】具有长期记忆的多模态智能体框架M3-Agent
  • Uniapp 项目创建与目录结构解析
  • LangChain实战(七):Text Embedding Models与Vector Stores
  • 嵌入式ARM程序高级调试技能:19.qumu arm elf无法生成coredump
  • 829作业
  • DAY17-新世纪DL(DeepLearning/深度学习)战士:Q(机器学习策略)2
  • Claude Code干翻Cursor后,轮到AI浏览器了
  • 组件通信终极指南:从Props Drilling到Context API
  • MPI-NCCL-TEST 训练自检,基础通信和可用的机器
  • NM:微生物组数据分析的规划与描述
  • GDPU操作系统实验:生产者消费者问题
  • Matplotlib:让数据在Python中跳舞的魔法画笔![特殊字符]
  • 5.【C++进阶】红黑树
  • C++从入门到实战(二十)详细讲解C++List的使用及模拟实现
  • Qt中解析XML文件
  • 基于muduo库的图床云共享存储项目(四)