SpringData查询过程解析

SpringData JPA复杂查询三:方法命名规则查询 SpringData JPA方法命名规则查询 按照Spring Data JPA 定义的规则,查询方法以findBy开头,涉及条件查询时,条件的属性用条件关键字连接,要注意的是:条件属性首字母需大写。框架在进行方法名解析时,会先把方法名多余的前缀截取掉,然后对剩下部分进行解析。 测试一:测试方法命名规则的 查询(查询方式 精准(默认)): findBy 对象中的属性名(首字母... 阅读详情

SpringData在查询的过程中并没有出现Sql语句,它是如何实现查询。

解析如下:

假如创建如下的查询:findByUserDepUuid(),框架在解析该方法时,首先剔除 findBy,然后对剩下的属性进行解析,假设查询实体为Doc:

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

2.从右往左截取第一个大写字母开头的字符串(此处为Uuid),然后检查剩下的字符串是否为查询实体的一个属性,如果是,则表示根据该属性进行查询;如果没有该属性,则重复

第二步,继续从右往左截取;最后假设 user 为查询实体的一个属性;

3.接着处理剩下部分(DepUuid),先判断 user 所对应的类型是否有depUuid属性,如果有,则表示该方法最终是根据 “ Doc.user.depUuid” 的取值进行查询;否则继续按照步骤

2 的规则从右往左截取,最终表示根据 “Doc.user.dep.uuid” 的值进行查询。

4.可能会存在一种特殊情况,比如 Doc包含一个 user 的属性,也有一个 userDep 属性,此时会存在混淆。可以明确在属性之间加上 "_" 以显式表达意图,

比如 "findByUser_DepUuid()" 或者 "findByUserDep_uuid()"

特殊的参数: 还可以直接在方法的参数上加入分页或排序的参数,比如:
1.Page<UserModel> findByName(String name, Pageable pageable);
2.List<UserModel> findByName(String name, Sort sort);



SpringData JPA 详解(自定义查询、分页、事务控制) 简介 SpringData JPA是 JPA的一种实现,极大的简化了JPA的开发,原始JPA的开发,需要创建实体管理工厂,使用实体管理器定义各种查询进行CRUD操作,而SpringData JPA只需要通过核心接口Repository和它的子类就能很方便的操作数据库。 Repository 1. Repository:最顶层的接口,一个空的接口,统一所有的Repository类型... 阅读详情

相关推荐

spring data API

Spring Data 项目的目的是为了简化构建基于 Spring 框架应用的数据访问计数,包括非关系数据库、Map-Reduce 框架、云数据服务等等;另外也包含对关系数据库的访问支持。 Spring Data 包含多个子项目: Commons - 提供共享的基础框架,适合各个子项目使用,支持跨数据库持久化 Hadoop - 基于 Spring 的 Hadoop 作业配置和一个 POJO 编程模型的 MapReduce 作业 Key-Value - 集成了 Redis 和 Riak ,提供多个常用场景下的简单封装 Document - 集成文档数据库:CouchDB 和 MongoDB 并提供基本的配置映射和资料库支持 Graph - 集成 Neo4j 提供强大的基于 POJO 的编程模型 Graph Roo AddOn - Roo support for Neo4j JDBC Extensions - 支持 Oracle RAD、高级队列和高级数据类型 JPA - 简化创建 JPA 数据访问层和跨存储的持久层功能 Mapping - 基于 Grails 的提供对象映射框架,支持不同的数据库 从之前发布其他chm文件下载用户的反映看,有不少朋友反映下载后打开无法显示,这一般不是chm文件的问题,这里统一说明一下解决办法: 如果文件打开看不到右边的内容,是因为你的操作系统为了安全对下载的chm文件进行了锁定,只需要在打开前右键单击该chm文件选择“属性”,然后在“常规”选项卡的下方单击“解除锁定”按钮就可以了。如果还是不能看,请再查看一下你的chm文件所存储的目录或文件名是否有特殊字符如“#”号字符等,去掉特殊字符即可。

springDATA JPA 查询不出结果

spring data 自定义查询语句 @Query(value=“select count(id) from user”,nativeQuery=true) 查询出来结果一直为0 解决办法: 再springboot 配置文件中,数据库连接添加characterEncoding=utf8(注意再mysql5.7可能出现这个问题) ...

qq_37202992的博客 1503

spring-data-elasticsearch api 离线文档

spring-data-elasticsearch api 离线文档, spring-data-elasticsearch2.0.2spring-data-elasticsearch api spring-data-elasticsearch api 离线文档

springboot接收Date类型数据异常与解决办法

默认情况下 在默认情况下,不加任何有关接收Date类型数据的配置时,前端传递Date类型数据至后端接口,控制台出现以下异常: Failed to convert from type [java.lang.String] to type [java.util.Date] for value '2333333333'; nested exception is java.lang.IllegalAr...

weixin_34341229的博客 1373

springdata mongodb api文档

springdata mongodb api文档、springdata mongodb api文档

SAP S4 MM模块自动记账全流程解析:从评估范围到科目分组的实战配置

本文深入解析SAP S4 MM模块自动记账的全流程,从核心概念评估范围与评估控制入手,详细阐述了评估类、科目分组等关键配置的逻辑关系。通过实战配置步骤,指导如何建立从物料移动(如收货、发料)到自动生成准确财务凭证的完整体系,确保库存价值与总账实时同步,为企业构建可靠的财务业务一体化基石。

weixin_29313547的博客 423

.Spring Data所解决的问题

1.Spring Data所解决的问题 Spring Data :提供了一整套数据访问层(DAO)的解决方案,致力于减少数据访问层(DAO)的开发量。它使用一个叫作Repository的接口类为基础,它被定义为访问底层数据模型的超级接口。而对于某种具体的数据访问操作,则在其子接口中定义。 public interface Repository { } 所有继承这个接口的inte...

jiahhai的专栏 229

【STM32Cube HAL】输入捕获(六)——脉宽测量

1

HAHAHA 4907

SpringData高级应用之SpringData概述

一、SpringData概述 1、持久层开发问题 由于互联网技术的发展,现在所要掌握的技术不仅是关系型数据库、还有用于缓存热点数据的redis、 用于存储文档数据的mongdb、用于支持强大搜索功能的elasticsearch, 同时这些技术需要不同的API,为了简化操作,并统一接口, 便用SpringData来作为中转站,掌握了SpringData就可以正常使用上诉的功能。 2、SpringData简介 2.1 什么是SpringData SpringData是一个.

熊凯瑞的博客 1437

从零开始:用RFSOC XCZU47DR搭建软件无线电开发环境(2023最新版)

本文详细介绍了如何使用Xilinx RFSoC XCZU47DR搭建高性能软件无线电(SDR)开发环境,涵盖硬件选型、开发环境配置、射频子系统校准及实战应用开发。特别针对2023年最新技术需求,提供从基础配置到高级优化的完整指南,助力科研人员和工程师快速掌握RFSoC开发技术。

weixin_42525005的博客 512

YOLOv11改进策略【损失函数篇】| 通过辅助边界框计算IoU提升检测效果(Inner_GIoU、Inner_DIoU、Inner_CIoU、Inner_EIoU、Inner_SIoU)

为了弥补现有 IoU 损失在不同检测任务中泛化性弱和收敛速度慢的问题,·Inner-IoU·通过引入比例因子 “ratio” 来控制辅助边界框的尺度大小,利用不同尺度的辅助边界框来计算损失,从而加速边界框回归过程。

Limiiiing的博客 3892

Spring Data —— 完全统一的API?

Spring Data 作为SpringSource的其中一个父项目, 旨在统一和简化对各类型持久化存储, 而不拘泥于是关系型数据库还是NoSQL 数据存储。 相关厂商内容 白皮书下载:JBoss Enterprise Application Platform 6迁移指南 白皮书下载:利用您的私有或混合云加速业务成果 Amazon五星敏捷图书作者、敏捷教练Amr Elssama...

刘飞 360

2026年VIVO嵌入式岗位高频面试题(含参考答案)

摘要:VIVO嵌入式岗位考核涵盖智能手机、IoT设备、芯片适配等方向,重点考察硬件底层交互、RTOS/Linux开发、C/C++功底与问题排查能力。题目按优先级排序,分硬件架构、RTOS、C/C++、数据结构、Linux实践、行业认知6大模块,共40道题。硬件部分涉及中断、ARM架构、加速技术、BSP开发等;RTOS部分区分硬/软实时系统;C/C++部分侧重内存管理、位操作;Linux部分考察常用命令;行业部分关注鸿蒙等系统理念。题目设计贴合实际工作场景,全面评估嵌入式开发能力。

Open 52

SpringData :下划线的那些破事

今天写一个查询语句的时候,报错如下 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tag_ArticleRepository': Invocation of init method failed; nested exception is java.lan...

weixin_34281477的博客 290

ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C 解决方案

本文主要介绍了ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject解决方案,希望能对使用Numpy的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 1万+

【测开求职】面试题:JAVA 吐血整理

本篇文章包含本次测开工程师秋招过程中遇到的所有JAVA面试题,全文两万字,亲测应对各个大厂的面试毫无压力👉

vector的博客 1211

java操作es聚合操作并显示其他字段_利用Java实现索引库相关的分页、排序和聚合...

今天是刘小爱自学Java的第162天。感谢你的观看,谢谢你。学习计划安排,利用Java代码来实现对索引库的各种操作:通过自定义方法实现匹配查询、范围查询。原生的查询代码又是如何编写的?最后还有聚合相关的代码编写。一、自定义方法昨天学了最基础的几种增删改查方法,但查询在实际应用中显然没这么简单。比如用户要匹配查询,前几天我们有学过,有match匹配和term匹配两种常用的方式。这些在Java中又是哪...

weixin_42121725的博客 542

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之Port模块配置详解(MCAL配置)

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之Port模块配置详解(MCAL配置)

weixin_42412049的博客 2277

SpringData的方法命名规则

最近在学MongoDB的是时候,发现如下: public interface CommentRepository extends MongoRepository<Comment,String > { Page<Comment> findByParentid(String parentid, Pageable pageable); } 这个方法就可以直接...

qq_29860591的博客 1449

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

JDBC、JdbcTemplate、SpringData对比学习

Spring Data 入门学习写在最前:学习一项新的技术,一个新的框架,总是要基于某个问题去学习,而不能是为了学框架而学框架,这样不仅学习过程痛苦,学习成效也不高。俗话说,熟能生巧,大概说的是使用的多了就用起来就顺手了的意思,如果单纯是为了学习而学习,而没有去实践它,学了也会很快就忘记。所以,在这个入门,我会从最简单的jdbc,到使用Spring的JdbcTemplate再到SpringData,

Changui_的博客 3900

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

springdata教程

github:https://github.com/leelun/springdata-example Spring Data Spring 的一个子项目。用于简化数据库访问,支持NoSQL 和 关系数据存储。其主要目标是使数据库的访问变得方便快捷。 SpringData 项目所支持 NoSQL 存储: MongoDB (文档数据库) Neo4j(图形数据库) Redis(键/值存储...

liu289747235的专栏 3228

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SpringData+JPA

按照SpringData命名规范 1.查询方法:find| read| get开头 + By 关键字: 涉及查询条件时,条件属性用关键字连接,要注意的是条件属性首字母大写 And,Or,Between,LessThan,GreaterThan,After ,Before,IsNull,IsNotNUll,NotNull Like, NotLike,StartingWith,EndWit...

fox_233的博客 632

SpringData入门(八)SpringData JPA之QueryByExampleExecutor接口

前言 本章讲解SpringData JPA中QueryByExampleExecutor接口的使用 方法 1.概念 我们知道,之前一直在讲解JpaRepository接口的一系列父接口,那么有一个父接口也很重要,那就是QueryByExampleExecutor接口 public interface JpaRepository<T, ID> extends Pa...

jwang的博客 1289

SpringData专题(九)-Spring Data JPA的查询方式

1.SpringData方法定义规范 通过上面的QucikStart的案例,了解到在使用SpringData时只需要定义Dao层接口及定义方法就可以操作数据库。但是,这个Dao层接口中的方法也是有定义规范的,只有按这个规范来,SpringData才能识别并实现该方法。下面来说说方法定义的规范。 1.1.简单的条件查询的方法定义规范 方法定义规范如下: 简单条件查询:查询某一个实体或者集合 按照Sp...

亲爱的瑶的博客 223

SpringData JPA 接口查询

SpringData JPA 接口查询 1、SpringData 接口继承结构 Repository:最顶层的接口,是一个空的接口,目的是为了统一所有Repository的类型,且能让组件扫描的时候自动识别。 CrudRepository :是Repository的子接口,提供CRUD的功能 PagingAndSortingRepository:是CrudRepository的子接口,添加分页和排序的功能 JpaRepository:是PagingAndSortingRepository的子接口,增加了一

路边烧卖 1385
上一篇: SpringData特有的查询
下一篇: SpringData的@Query的注释操作
@夫子慧
博客等级 码龄9年 9粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值