Spring Data JPA 从入门到精通~查询方法的创建

查询方法的创建

内部基础架构中有个根据方法名的查询生成器机制,对于在存储库的实体上构建约束查询很有用,该机制方法的前缀 find…By、read…By、query…By、count…By 和 get…By 从所述方法和开始分析它的其余部分(实体里面的字段)。

感兴趣的读者可以到类 org.springframework.data.repository.query.parser.PartTree 查看相关源码的逻辑和处理方法,关键源码如下:

引入子句可以包含其他表达式,例如在 Distinct 要创建的查询上设置不同的标志,然而,第一个 By 作为分隔符来指示实际标准的开始,在一个非常基本的水平,可以定义实体性条件,并与它们串联 And 和 Or。

一句话概况,带查询功能的方法名有查询策略(关键字)+ 查询字段 + 一些限制性条件组成。

看例子如下,可以直接 Controller 里面进行调用看看效果:

interface PersonRepository extends Repository<User, Long> {// and的查询关系List<User> findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname);// 包含distinct去重,or的sql语法List<User> findDistinctPeopleByLastnameOrFirstname(String lastname, String firstname);List<User> findPeopleDistinctByLastnameOrFirstname(String lastname, String firstname);// 根据lastname字段查询忽略大小写List<User> findByLastnameIgnoreCase(String lastname);// 根据lastname和firstname查询equal并且忽略大小写List<User> findByLastnameAndFirstnameAllIgnoreCase(String lastname, String firstname); // 对查询结果根据lastname排序List<User> findByLastnameOrderByFirstnameAsc(String lastname);List<User> findByLastnameOrderByFirstnameDesc(String lastname);
}

解析方法的实际结果取决于创建查询的持久性存储。但是,有一些一般的事情要注意:

  • 表达式通常是可以连接运算符的属性遍历,可以使用组合属性表达式 And 和 or,还可以得到这样的运算关键字为支撑 Between、LessThan、GreaterThan、Like 为属性表达式,受支持的操作员可能因数据存储而异,需要注意一下。
  • 该方法解析器支持设置一个 IgnoreCase 标志个别特性(例如,findByLastnameIgnoreCase(…))或对于支持忽略大小写(通常是一个类型的所有属性 String 情况下,如 findByLastnameAndFirstnameAllIgnoreCase(…)),是否支持忽略案例可能会因存储而异,需要了解特定于场景的查询方法。
  • 还可以通过 OrderBy 在引用属性和提供排序方向(Asc 或 Desc)的查询方法中附加一个子句来应用静态排序,要创建支持动态排序的查询方法,来影响查询结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496257.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能在能源行业的5个应用

作者&#xff1a;CB Insights . 来源&#xff1a;CometLabs摘要&#xff1a;自2012年以来&#xff0c;把人工智能和能源产业放在一起进行报道的新闻开始增多。本文简要描述了人工智能在能源行业的5个应用方向&#xff0c;及对应的案例。能源行业会产生大量的数据。为了将这些数…

VMware 安装 win7、win10、MAC 和网络模式VMnet0、VMnet1、VMnet8解释

VMware虚拟机安装ghost win7系统方法&#xff1a;http://www.xitongcheng.com/jiaocheng/xtazjc_article_15314.html VMWare14 安装Mac OS系统&#xff08;图解&#xff09;&#xff1a;http://blog.csdn.net/u011415782/article/details/78505422 虚拟机&#xff08;VMware …

Spring Data JPA 从入门到精通~关键字列表

注意除了 find 的前缀之外&#xff0c;我们查看 PartTree 的源码&#xff0c;还有如下几种前缀&#xff1a; private static final String QUERY_PATTERN "find|read|get|query|stream"; private static final String COUNT_PATTERN "count"; private s…

当科学遇上众包:9个值得关注的前沿科技算力众包平台

来源&#xff1a; 资本实验室 . 作者&#xff1a;李鑫找到癌症治疗的方法&#xff0c;预测气候的变化&#xff0c;追踪可能与地球相撞的小行星……甚至预测地震&#xff0c;我们每天都面临着各种世界性难题。如果你想参与解决这些难题&#xff0c;公民科学应用将让你发挥作用…

htop 命令详解

htop 官网&#xff1a;http://htop.sourceforge.net/ Linux top 命令的用法详细详解&#xff1a;https://www.cnblogs.com/zhoug2020/p/6336453.html htop 使用详解&#xff1a;https://www.cnblogs.com/programmer-tlh/p/11726016.html 使用 yum 无法直接安装 htop&#xff…

linux主机服务器日志采集,Linux通过Rsyslog搭建集中日志服务器

(一)Rsyslog简介ryslog 是一个快速处理收集系统日志的程序&#xff0c;提供了高性能、安全功能和模块化设计。rsyslog 是syslog 的升级版&#xff0c;它将多种来源输入输出转换结果到目的地。rsyslog是一个开源工具&#xff0c;被广泛用于Linux系统以通过TCP/UDP协议转发或接收…

IDC预测2022年全球智能家居连接设备市场规模将达10亿台!

来源&#xff1a; IDC官网、智慧生活&#xff1b; 物联网资本论编译摘要&#xff1a;2017年&#xff0c;全球智能家居连接设备市场规模达到43310万台&#xff0c;比上一年增长27.6&#xff05;。2022年市场达到9.397亿台&#xff0c;IDC预计复合年增长率&#xff08;CAGR&#…

effective C++ 读书笔记

本篇文章都是摘自 《Effective C》 中文版 第三版 和 第二版。 再好的记性也有忘记的一天&#xff0c;记录下以备随时查看。。。 电子书下载地址&#xff1a;https://download.csdn.net/download/freeking101/10278088 《Effective C》第二版在线教程&#xff1a;http://www.…

Spring Data JPA 从入门到精通~思维导图

#原图 System.out.println("https://www.processon.com/view/61c7227c0e3e7474fb9b4b76?fromnew1");

高通5G版图现身!你的网络生活将迎来巨变?

来源&#xff1a;36Kr 作者&#xff1a;桐由于骁龙845移动平台和骁龙636移动平台的首发&#xff0c;3月的手机市场对于持币代购的消费者而言注定是充满期待的&#xff0c;在三星S9和红米Note5刷屏之时&#xff0c;曾经隐身手机幕后的高通也再一次引发用户热议&#xff0c;高通…

linux添加nginx,linux下安装Nginx1.16.0的教程详解

因为最近在倒腾linux&#xff0c;想安装新版本的nginx&#xff0c;找了一圈教程没有找到对应的教程&#xff0c;在稍微倒腾了一会之后终于成功的安装了最新版。服务器环境为centos&#xff0c;接下来是详细步骤&#xff1a;安装必要依赖插件?创建文件夹并切换过去?下载安装包…

深度|2030年8亿人会失业!图解机器人如何取代你的工作

来源&#xff1a;财看见-腾讯财经&#xff08;ID&#xff1a;qqckj2017&#xff09;未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0…

Java使用Itext5.5.10进行pdf签章

来源&#xff1a;Java使用Itext5.5.10进行pdf签章_liumengya007007的博客-CSDN博客_itext 签章 啰嗦 说到PDF数字签名签章&#xff0c;这个其实也是数字证书信息安全的应用范畴&#xff0c;关于数字证书和数字签名&#xff0c;网上有很多解释说明&#xff0c;但讲解都多不够详…

Python的bool类型

写习惯了C#的代码&#xff0c;在想要将一个字符串False转换为bool型的时候&#xff0c;很自然的写了如下的Python代码&#xff1a; 看到上面的结果了没&#xff1f;是True。突然记起Python中除了、""、0、()、[]、{}、None为False之外&#xff0c;其他的都是True。也…

工业机器人发展趋势分析 未来营收规模达到百亿级水平

来源&#xff1a;前瞻产业研究院摘要&#xff1a;工业机器人是打造自动化工厂的重要组成,可有效提高效率生产、降低成本和控制质量。工业机器人是面向工业领域的多关节机械手或多自由度的机器装置,它能自动执行工作,是靠自身动力和控制能力来实现各种功能的一种机器。工业机器人…

【itext学习之路】--5.对pdf进行盖章/签章/数字签名

来源&#xff1a;【itext学习之路】-------&#xff08;第五篇&#xff09;对pdf进行盖章/签章/数字签名_tomatocc的博客-CSDN博客_itext 数字签名 在上一篇文章中&#xff0c;我们学习了使用itext对pdf增加图片水印和文本水印&#xff0c;那么这篇文章我们将要学习更高级一点…

python selenium 用法 和 Chrome headless

From: http://cuiqingcai.com/2599.html Selenium教程&#xff1a;https://www.yiibai.com/selenium selenium 官方参考文档&#xff1a;https://selenium-python.readthedocs.io/index.html Selenium Documentation&#xff1a;https://www.seleniumhq.org/docs Selenium 与 …

【itext学习之路】--1.创建一个简单的pdf文档

来源&#xff1a;https://blog.csdn.net/tomatocc/article/details/80666011 iText是著名的开放源码的站点sourceforge一个项目&#xff0c;是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档&#xff0c;而且可以将XML、Html文件转化为PDF文件 本教程中…

并发服务器设计思路,参考apache学习UDP和QoS,研究成果

研究了快1个月的服务器架构&#xff0c;把研究成果记录一下。参考的有&#xff1a;Apache vlc ACE ftp我主要需要其中的并发处理&#xff0c;内存管理&#xff0c;TCP/UDP.QoS&#xff0c;速度限制等方面的内容&#xff0c;所以着重说这几方面。首先看一下Apache的基本框图&…

一文看懂NB-IoT!

来源&#xff1a;物联江湖(iot521) 作者&#xff1a;王一鸣一直以来&#xff0c;人们通过相应的终端&#xff08;电脑、手机、平板等&#xff09;使用网络服务&#xff0c;“个人”一直是网络的用户主体。个人对网络质量的要求“高”且“统一”&#xff1a;玩网络游戏必需要低…