iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >使用Spring Data JPA如何实现自定义规则查询
  • 509
分享到

使用Spring Data JPA如何实现自定义规则查询

springdatajpa 2023-05-31 16:05:03 509人浏览 安东尼
摘要

使用spring Data JPA如何实现自定义规则查询?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、常用规则速查1   And    并且2   Or    &nbs

使用spring Data JPA如何实现自定义规则查询?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

一、常用规则速查

1   And    并且
2   Or      或
3   Is,Equals    等于
4   Between      两者之间
5   LessThan      小于
6   LessThanEqual     小于等于
7   GreaterThan     大于
8   GreaterThanEqual   大于等于
9   After    之后(时间) >
10  Before    之前(时间) <
11  IsNull        等于Null
12  IsNotNull,NotNull   不等于Null
13  Like    模糊查询。查询件中需要自己加 %
14  NotLike     不在模糊范围内。查询件中需要自己加 %
15  StartingWith  以某开头
16  EndingWith    以某结束
17  Containing   包含某
18  OrderBy  排序
19  Not    不等于
20  In     某范围内
21  NotIn    某范围外
22  True    真
23  False    假
24  IgnoreCase  忽略大小写

使用Spring Data JPA如何实现自定义规则查询

二、Spring Data 解析方法名--规则说明

1、规则描述

按照Spring data 定义的规则,查询方法以find|read|get开头(比如 find、findBy、read、readBy、get、getBy),涉及条件查询时,条件的属性用条件关键字连接,要注意的是:条件属性首字母需大写。框架在进行方法名解析时,会先把方法名多余的前缀截取掉,然后对剩下部分进行解析。

如果方法的最后一个参数是 Sort 或者 Pageable 类型,也会提取相关的信息,以便按规则进行排序或者分页查询。

2、举例说明

比如 findByUserAddressZip()。框架在解析该方法时,首先剔除 findBy,然后对剩下的属性进行解析,详细规则如下(此处假设该方法针对的域对象为 AccountInfo 类型):

先判断 userAddressZip (根据 POJO 规范,首字母变为小写,下同)是否为 AccountInfo 的一个属性,如果是,则表示根据该属性进行查询;如果没有该属性,继续第二步;

从右往左截取第一个大写字母开头的字符串(此处为 Zip),然后检查剩下的字符串是否为 AccountInfo 的一个属性,如果是,则表示根据该属性进行查询;如果没有该属性,则重复第二步,继续从右往左截取;最后假设 user 为 AccountInfo 的一个属性;

接着处理剩下部分( AddressZip ),先判断 user 所对应的类型是否有 addressZip 属性,如果有,则表示该方法最终是根据 "AccountInfo.user.addressZip" 的取值进行查询;否则继续按照步骤 2 的规则从右往左截取,最终表示根据 "AccountInfo.user.address.zip" 的值进行查询。

可能会存在一种特殊情况,比如 AccountInfo 包含一个 user 的属性,也有一个 userAddress 属性,此时会存在混淆。读者可以明确在属性之间加上 "_" 以显式表达意图,比如 "findByUser_AddressZip()" 或者 "findByUserAddress_Zip()"。(强烈建议:无论是否存在混淆,都要在不同类层级之间加上"_" ,增加代码可读性)

三、一些情况

1、当查询条件为null时。

举例说明如下:

实体定义:对于一个客户实体Cus,包含有name和sex,均是String类型。

查询方法定义:List<Cus> findByNameAndSex(String name,String sex);

使用时:dao.findByNameAndSex(null, "男");

后台生成sql片断:where (cus0_.name is null) and cus0_.sex=&#63;

结论:当查询时传值是null时,数据库中只有该字段是null的记录才符合条件,并不是说忽略这个条件。也就是说,这种查询方式,只适合于明确查询条件必须传的业务,对于动态查询(条件多少是动态的,例如一般的查询列表,由最终用户使用时决定输入那些查询条件),这种简单查询是不能满足要求的。

2、排序

List<Cus> findBySexOrderByName(String sex); //名称正序(正序时,推荐此方式,简单)List<Cus> findBySexOrderByNameAsc(String sex); //名称正序(效果同上)List<Cus> findBySexOrderByNameDesc(String sex); //名称倒序

--结束END--

本文标题: 使用Spring Data JPA如何实现自定义规则查询

本文链接: https://www.lsjlt.com/news/226978.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用Spring Data JPA如何实现自定义规则查询
    使用Spring Data JPA如何实现自定义规则查询?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、常用规则速查1   And    并且2   Or    &nbs...
    99+
    2023-05-31
    spring data jpa
  • Spring Data Jpa多表查询如何返回自定义实体
    小编给大家分享一下Spring Data Jpa多表查询如何返回自定义实体,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!SpringDataJ...
    99+
    2023-06-29
  • spring data jpa如何使用自定义repository实现类
    目录spring data jpa使用自定义repository实现类创建MyJpaRepository实现类创建MyJpaRepositoryFactoryBean配置JPAJpa...
    99+
    2022-11-12
  • spring data jpa 查询自定义字段,转换为自定义实体方式
    目标:查询数据库中的字段,然后转换成 JSON 格式的数据,返回前台。 环境:idea 2016.3.4, jdk 1.8, mysql 5.6, spring-boot 1.5.2...
    99+
    2022-11-12
  • Spring Data Jpa如何实现自定义方法
    这篇文章将为大家详细讲解有关Spring Data Jpa如何实现自定义方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Spring Data Jpa 自定义方法的实现最近项目中用到...
    99+
    2023-06-22
  • 如何理解Spring Data JPA查询方式及方法名查询规则
    这篇文章给大家介绍如何理解Spring Data JPA查询方式及方法名查询规则,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Spring Data JPA查询方式及方法名查询规则Spring Da...
    99+
    2023-06-21
  • Spring Data JPA实现查询结果返回map或自定义的实体类
    目录Spring Data JPA查询结果返回map或自定义的实体类1.工具类2.具体应用spingboot:jpa:Spring data jpa 返回map 结果集Spring ...
    99+
    2022-11-12
  • spring-data-jpa使用自定义repository来实现原生sql
    目录使用自定义repository实现原生sql自定义Repository接口创建自定义RepositoryFactoryBeanSpringDataJpa原生SQL查询a.首先在S...
    99+
    2022-11-12
  • 在Spring Boot中使用Spring-data-jpa实现分页查询
    在我们平时的工作中,查询列表在我们的系统中基本随处可见,那么我们如何使用jpa进行多条件查询以及查询列表分页呢?下面我将介绍两种多条件查询方式。1、引入起步依赖   <dependency> <gro...
    99+
    2023-05-31
    spring boot data
  • spring-data-jpa怎么使用自定义repository来实现原生sql
    这篇文章给大家分享的是有关spring-data-jpa怎么使用自定义repository来实现原生sql的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用自定义repository实现原生sqlSpring D...
    99+
    2023-06-21
  • Spring Data JPA 如何使用QueryDsl查询并分页
    目录SpringDataJPA使用QueryDsl查询并分页使用QueryDSLSpring Data JPA 使用QueryDsl查询并分页 QProblemPoint qP...
    99+
    2022-11-12
  • JPA如何使用findBy方法自定义查询
    目录JPA使用findBy方法自定义查询在JPA中使用findBy方法自定义查询在postman测试请求的接口如下JPA的findBy语法整理前提操作JPA中支持的关键词JPA使用f...
    99+
    2022-11-12
  • 使用Spring Data JPA如何实现多条件的分页查询
    使用Spring Data JPA如何实现多条件的分页查询?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。话不多说,请看代码:public Map<String, Obje...
    99+
    2023-05-31
    spring 分页查询 dat
  • 如何使用Spring Data Jpa查询全部并排序
    这篇文章将为大家详细讲解有关如何使用Spring Data Jpa查询全部并排序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Spring Data Jpa查询全部并排序1、Repository层只需要简...
    99+
    2023-06-25
  • springboot jpa如何实现返回结果自定义查询
    这篇文章主要讲解了“springboot jpa如何实现返回结果自定义查询”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“springboot jpa如何实现返回结果自定义...
    99+
    2023-06-29
  • Spring MVC结合Spring Data JPA如何实现按条件查询和分页功能
    这篇文章主要为大家展示了“Spring MVC结合Spring Data JPA如何实现按条件查询和分页功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Spring MVC结合Spring D...
    99+
    2023-05-30
    spring mvc jpa
  • Spring Data MongoDB中如何实现自定义级联
    这篇文章给大家分享的是有关Spring Data MongoDB中如何实现自定义级联的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言Spring Data MongoDB 项目提供与MongoDB文档数据库的集...
    99+
    2023-05-30
    springdata mongodb
  • vue elementUI如何实现自定义正则规则验证
    这篇文章给大家分享的是有关vue elementUI如何实现自定义正则规则验证的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。项目场景:常见的表单填写中都会遇到,比如新增信息,修改信息等,如下图相信大家对...
    99+
    2023-06-29
  • JPA如何使用nativequery多表关联查询返回自定义实体类
    目录JPA nativequery多表关联查询返回自定义实体类JPA多表关联的实现方式优缺点对比使用sql并返回自定义实体类JPA多表关联动态查询(自定义sql语句)实体类注解解释测...
    99+
    2022-11-12
  • JPA怎么使用nativequery多表关联查询返回自定义实体类
    这篇文章主要介绍了JPA怎么使用nativequery多表关联查询返回自定义实体类,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JPA nativequery多表关联查询返回...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作