芋道 Spring Boot JPA 入门(二)之基于方法名查询

Spring Boot整合Spring Data JPA详解 Spring Boot整合Spring Data JPA理解 官方文档: Spring Data JPA 官方文档 一、 Sping Data JPA 简介 在此之前我们首先来认识一下,**Spring Data JPA** 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的JPA 应用框架,底层使用了 Hibernate 的 JPA 技术实现,Spring Data JP... 阅读详情

点击上方“芋道源码”,选择“设为星标”

做积极的人,而不是积极废人!

源码精品专栏

 

摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/JPA/ 「芋道源码」欢迎转载,保留摘要,谢谢!

  • 1. 概述

  • 2. 快速入门

  • 3. 分页操作

  • 4. 基于方法名查询

  • 5. 基于注解查询

  • 666. 彩蛋


4. 基于方法名查询

示例代码对应仓库:lab-13-jpa 。

在 Spring Data 中,支持根据方法名作生成对应的查询(WHERE)条件,进一步进化我们使用 JPA ,具体是方法名以 findBy、existsBy、countBy、deleteBy 开头,后面跟具体的条件。具体的规则,在 《Spring Data JPA —— Query Creation》 文档中,已经详细提供。如下:

关键字方法示例JPQL snippet
AndfindByLastnameAndFirstname… where x.lastname = ?1 and x.firstname = ?2
OrfindByLastnameOrFirstname… where x.lastname = ?1 or x.firstname = ?2
Is, EqualsfindByFirstname,findByFirstnameIs,findByFirstnameEquals… where x.firstname = ?1
BetweenfindByStartDateBetween… where x.startDate between ?1 and ?2
LessThanfindByAgeLessThan… where x.age < ?1
LessThanEqualfindByAgeLessThanEqual… where x.age <= ?1
GreaterThanfindByAgeGreaterThan… where x.age > ?1
GreaterThanEqualfindByAgeGreaterThanEqual… where x.age >= ?1
AfterfindByStartDateAfter… where x.startDate > ?1
BeforefindByStartDateBefore… where x.startDate < ?1
IsNull, NullfindByAge(Is)Null… where x.age is null
IsNotNull, NotNullfindByAge(Is)NotNull… where x.age not null
LikefindByFirstnameLike… where x.firstname like ?1
NotLikefindByFirstnameNotLike… where x.firstname not like ?1
StartingWithfindByFirstnameStartingWith… where x.firstname like ?1 (parameter bound with appended %)
EndingWithfindByFirstnameEndingWith… where x.firstname like ?1 (parameter bound with prepended %)
ContainingfindByFirstnameContaining… where x.firstname like ?1 (parameter bound wrapped in %)
OrderByfindByAgeOrderByLastnameDesc… where x.age = ?1 order by x.lastname desc
NotfindByLastnameNot… where x.lastname <> ?1
InfindByAgeIn(Collection ages)… where x.age in ?1
NotInfindByAgeNotIn(Collection ages)… where x.age not in ?1
TruefindByActiveTrue()… where x.active = true
FalsefindByActiveFalse()… where x.active = false
IgnoreCasefindByFirstnameIgnoreCase… where UPPER(x.firstame) = UPPER(?1)
  • 注意,如果我们有排序需求,可以使用 OrderBy 关键字。

下面,我们来编写一个简单的示例。

艿艿:IDEA 牛逼,提供的插件已经能够自动提示上述关键字。太强了~

4.1 UserRepository03

在 cn.iocoder.springboot.lab13.mybatis.repository 包路径下,创建 UserRepository03 接口。代码如下:

// UserRepository03.java

public interface UserRepository03 extends PagingAndSortingRepository<UserDO, Integer> {

    UserDO findByUsername(String username);

    Page<UserDO> findByCreateTimeAfter(Date createTime, Pageable pageable);

}
  • 对于分页操作,需要使用到 Pageable 参数,需要作为方法的最后一个参数。

4.2 简单测试

创建 UserRepository03Test 测试类,我们来测试一下简单的 UserRepository03 的每个操作。代码如下:

// UserRepository03.java

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserRepository03Test {

    @Autowired
    private UserRepository03 userRepository;

    @Test
    public void testFindByUsername() {
        UserDO user = userRepository.findByUsername("yunai");
        System.out.println(user);
    }

    @Test
    public void testFindByCreateTimeAfter() {
        // 创建分页条件
        Pageable pageable = PageRequest.of(1, 10);
        // 执行分页操作
        Date createTime = new Date(2018 - 1990, Calendar.FEBRUARY, 24); // 临时 Demo ,实际不建议这么写
        Page<UserDO> page = userRepository.findByCreateTimeAfter(createTime, pageable);
        // 打印
        System.out.println(page.getTotalElements());
        System.out.println(page.getTotalPages());
    }

}

具体的,胖友可以自己跑跑,妥妥的。



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:

已在知识星球更新源码解析如下:


最近更新《芋道 SpringBoot 2.X 入门》系列,已经 20 余篇,覆盖了 MyBatis、Redis、MongoDB、Elasticsearch、分库分表、读写分离、SpringMVC、SpringWebflux、WebSocket、性能测试等等内容。

提供近 2W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

如果你喜欢这篇文章,喜欢,转发。

生活很美好,明天见(。・ω・。)ノ♡

Spring Boot Jpa 的使用 | Spring Boot 5 一、Spring Boot Jpa简介 Jpa(Java Persistence API)是sun官方提出的java持久化规范。它为java开发人员提供了一种对象/关联映射工具,来管理java应用中的关系数据。它的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在hibernate、toplink、jdo等ORM框架各自为营的局面。 值得注意的是,Jpa是在充分吸收了现有ORM框... 阅读详情

相关推荐

一个完整的c#股票分析软件源码

完整的c#股票分析软件源码

qq_35600909的博客 4596

芋道两种分页写法

若方法签名清晰明确(比如 mapper 只分页一次),建议用。统一风格,整个项目建议选用一种写法保持一致。,最终分页逻辑完全一样。

qq_56947957的博客 557

使用Docker搭建SearXNG搜索引擎

【代码】使用Docker搭建SearXNG搜索引擎。

janthinasnail的博客 1183

JPA exists查询,使用Specification或原生Sql两种方式

JPA的Specification方式查询单表是十分方便的,但是如果需要使用多表连接查询时,项目里没有找到可供参考的样本。优点:不需要编写sql,也不需要进行key驼峰转换,无须使用map转对象或调整前端接收值的格式调整,更重要的是符合代码规范。需求:包含多查询条件(条件为空时不参与查询),查询语句包含了exists从表,且需要分页的典型页面查询场景。使用JPA的Specification的单表查询,在这里仅查询主表作为基础。如果查询sql不是可变的,可以在Dao层定义时,使用@Query注解。

weixin_50728191的博客 1806

Python中优化模块scipy.optimize的优化算法介绍

如果你有一个特殊的优化问题,你可以使用对象来自定义问题的求解。# 自定义目标函数# 自定义优化问题custom_problem.fun = custom_objective_function # 目标函数custom_problem.x = [1, 1] # 初始猜测# 执行优化# 打印结果在上述例子中,我们自定义了一个对象,并指定了目标函数和初始猜测,然后使用minimize函数进行求解。Scipy的优化模块提供了丰富的功能,适用于各种优化问题。

Pandas120的博客 3050

系统安装、qt配置、安装pcie驱动

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 安装Linux系统指定:ununtu20.04并配置相关软件环境 前言 提示:这里可以添加本文要记录的大概内容: ununtu20.04、Qt 5.9.0、pcie驱动 提示:以下是本篇文章正文内容,下面案例可供参考 一、安装系统 制作系统盘(win10),在开机时按相应键进入BIOS,(华硕需要先改配置启动->CSM->开启->第一个选项选第一个或第二个),等待即可 进入后按照https://www.sysgeek.

weixin_44832804的博客 2207

芋道 Spring Boot JPA 入门(三)之基于注解查询

点击上方“芋道源码”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创 | Java 2019 超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络...

芋艿V 269

Altium Designer(AD24/25)如何在PCB设计阶段做阻抗匹配

目前阻抗匹配多直接有制版厂进行,PCB设计师在设计阶段可不关注阻抗设计,在加工阶段只需标注需要控制的阻抗线,制板厂即可按照要求对阻抗线进行调整和控制。但是对于设计师来讲掌握阻抗线的设计方法也是非常必要的。本文介绍Altium Designer(AD24/25)如何在PCB设计阶段做阻抗匹配。

fydar的博客 895

芋道 Spring Boot 安全框架 Spring Security 入门

本文在提供完整代码示例,可见GitHub - YunaiV/SpringBoot-Labs: 一个涵盖六个专栏:Spring Boot 2.X、Spring Cloud、Spring Cloud Alibaba、Dubbo、分布式消息队列、分布式事务的仓库。希望胖友小手一抖,右上角来个 Star,感恩 1024的 对应lab-01-spring-security目录。 原创不易,给点个Star嘿,一起冲鸭! 1. 概述 基本上,在所有的开发的系统中,都必须做认证(authenticat...

chen1133的博客 9576

gem5-gpu教程01 部署(实测可跑通)

这将GPGPU-Sim更新为与gem5-gpu兼容的最新版本。此版本是已知可用于gem5 gpu的最新版本。

qq_20388971的博客 1406

RK AVS双目融合记录

NOTE] 调试平台双目avs融合调试,需要先保证两个摄像头能正常出图同时出流。使用默认工具测试vi->avs->venc通路是否正常,-a可指定isp效果文件需要开启CONFIG_VIDEO_ROCKCHIP_AVSP和CONFIG_VIDEO_ROCKCHIP_FEC,dts中使能。

mangofu的博客 106

一起来学 SpringBoot 2.x | 第十四篇:强大的 Actuator 服务监控与管理

点击上方“芋道源码”,选择“置顶公众号”技术文章第一时间送达!源码精品专栏 精尽 Dubbo 原理与源码 69 篇精尽 Netty 原理与源码 61 篇中文详细注释的开源...

芋道源码 2079

双目相机标定理论与编程实现

双目相机标定是计算机视觉中的重要任务,通过确定双目相机的内参和外参,可以实现立体视觉的深度感知和三维重建。通过使用OpenCV库提供的函数,我们可以方便地进行双目相机的标定工作。双目相机标定是计算机视觉中的重要任务,用于确定双目相机的内参和外参,以实现立体视觉的深度感知和三维重建。通过上述代码,我们可以获得左右相机的内参矩阵、畸变系数、旋转矩阵和平移矩阵等参数,从而完成双目相机的标定过程。使用双目相机采集一系列左右相机的图像,确保标定板在不同位置和角度下都能被双目相机拍摄到。函数来检测标定板的角点。

ByteKnight的博客 325

idea jpa方法 自动提示_芋道 Spring Boot JPA 入门(二)之基于方法名查询

摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/JPA/ 「芋道源码」欢迎转载,保留摘要,谢谢!1. 概述2. 快速入门3. 分页操作4. 基于方法名查询5. 基于注解查询666. 彩蛋《Java 2019 超神之路》《Dubbo 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原理与源码解析 ——...

weixin_39634480的博客 557

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

spring boot 中使用 jpa以及jpa介绍

最近在项目中使用了一下jpa,发现还是挺好用的。这里就来讲一下jpa以及在spring boot中的使用。 在这里我们先来了解一下jpa。1.什么是jpa呢?JPA顾名思义就是Java Persistence API的意思,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 2.jpa具有什么优势?2.1标准化 JPA 是 JCP 组织发布的 Java

深存少年梦 28万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java Web开发进阶——Spring Boot与Spring Data JPA

Spring Data JPA 是 Spring Data 项目中的子项目,旨在简化与 JPA(Java Persistence API)的集成。它在标准 JPA 的基础上提供了更高层次的抽象,开发者可以使用极少的代码实现复杂的数据操作。Spring Data JPA 是 Spring 提供的一种面向数据访问的持久化框架,它简化了 JPA 的实现,为开发者提供了一种快速操作数据库的方式。Spring Data JPA 的强大之处在于其灵活的查询方式,支持方法派生、JPQL 和原生 SQL。

好看资源网的博客 2247

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

芋道 Spring Boot JPA 入门

点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创 | Java 2020超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析...

weixin_44421461的博客 350

芋道 Spring Boot JPA 入门(一)之快速入门

点击上方“芋道源码”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创 | Java 2019 超神之路,很肝~中文详细注释的开源项目分布式复习--RPC框架Dubbo 二...

芋艿V 440

Spring Boot JPA-Repository方法名查询推导

Spring Boot JPA-Repository方法名查询推导 Repository的默认实现 初始化Repository 核心的PartTreeJpaQuery Repository的默认实现 1.Repository接口的默认实现是 SimpleJpaRepository ,以及他的扩展实现 QueryDslJpaRepository 其中,QueryDslJpaRepository不在我们这篇文章讨论范围内。 重点关注SimpleJpaRepository,它实现了 JpaRepo

MR_Peach07的博客 1110

Spring Boot下的Spring Data JPA实战详解

1.点睛Spring Data JPA(1).什么名字是Spring Data JPA Spring Data JPA是Spring基于Hibernate开发的一个JPA框架,Spring Data JPA是Spring Data的一个子项目,它通过提供基于JPA的Repository极大地减少了JPA作为数据访问方案的代码量,也就是xml不需要再写很多常规的sql代码了。(2).定义数据访问层

c136547731的博客 2810

芋道 Spring Boot Elasticsearch 入门

点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创 | Java 2020超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析...

weixin_44421461的博客 283

【Spring Boot】Java 持久层 API(三):JPA 的查询方式

QueryDSL 也是基于各种 ORM 之上的一个通用查询框架,它与 Spring Data JPA 是同级别的。使用 QueryDSL 的 API 可以写出 SQL 语句(Java 代码,非真正标准 SQL),不需要懂 SQL 语句。它能够构建类型安全的查询。这与 JPA 使用原生查询时有很大的不同,可以不必再对 Object[] 进行操作。它还可以和 JPA 联合使用。

Data · Model · Agent · Repeat 2408

@data注解_芋道 Spring Boot JPA 入门(三)之基于注解查询

Java 并发源码摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/JPA/ 「芋道源码」欢迎转载,保留摘要,谢谢!1. 概述2. 快速入门3. 分页操作4. 基于方法名查询5. 基于注解查询666. 彩蛋《Java 2019 超神之路》《Dubbo 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原...

weixin_39845206的博客 187

Spring Boot 整合 Spring Data JPA 入门:只需注解,告别 SQL

Spring Boot 整合 Spring Data JPA 入门:只需注解,告别 SQL。在传统的 Java EE 开发中,我们习惯于使用 JDBC 或 MyBatis 这样的半自动化框架。我们需要手写大量的 SQL 语句,并在 Java 对象和数据库表之间手动进行数据映射。这种方式灵活,但枯燥且容易出错。

夜雨的博客 987

Spring Boot 之 JPA的查询方式

JPA 的查询方式 约定方法名一定要根据命名规范来书写,Spring Data 会根据前缀、中间连接词(Or、And、Like、NotNull 等类似 SQL 中的关键字)、内部拼接 SQL 代理生成方法的实现。约定方法名的方法见表: 关键词 SQL符号 样例 对应JPQL 语句片段 And and findByLastnameAndFirstname … where x.lastname = ?1 and x.first

惟忆 4万+

Spring Boot Jpa实现简单的查询findByUsernameAndPassword

版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接 ,博主地址:http://blog.youkuaiyun.com/xuyonjinJPA        JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。        JPA 的目标之一是制定一个可以由很多供应商实...

xuyonjin的博客 1万+
上一篇: 这 10 个让你笑的合不拢嘴的 GitHub 项目,居然拿了 7 万星!
下一篇: Java 8中Stream API 的这些奇技淫巧!你都 Get 到了吗?
公众号-芋道源码
博客等级 码龄10年 1636粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值