JPA如何使用findBy方法自定义查询

目录
  • JPA使用findBy方法自定义查询
    • 在JPA中使用findBy方法自定义查询
    • 在postman测试请求的接口如下
  • JPA的findBy语法整理
    • 前提操作
    • JPA中支持的关键词

JPA使用findBy方法自定义查询

最近在项目中使用spring boot+jpa的方式来访问数据库,例如:本项目中的课程目录详情表中包括了外键课程详情ID,想通过课程详情ID查找出所有关联的课程目录详情

在JPA中使用findBy方法自定义查询

在postman测试请求的接口如下

这样就很方便的查询所需要的数据,不用再写接口去过滤了。

JPA的findBy语法整理

前提操作

  • 创建一个可持久化的实体类
  • dao层继承JpaRepository<T,ID>

T:实体类

ID:实体类的主键类型

例:

public interface SysUserRespository extends JpaRepository<SysUser,Long> {}

JPA中支持的关键词

  • And:等价于 SQL 中的 and 关键字,比如 findByUsernameAndPassword(String user, Striang pwd);
  • Or:等价于 SQL 中的 or 关键字,比如 findByUsernameOrAddress(String user, String addr);
  • Between:等价于 SQL 中的 between 关键字,比如 findBySalaryBetween(int max, int min);
  • LessThan:等价于 SQL 中的 "<",比如 findBySalaryLessThan(int max);
  • GreaterThan:等价于 SQL 中的">",比如 findBySalaryGreaterThan(int min);
  • IsNull:等价于 SQL 中的 "is null",比如 findByUsernameIsNull();
  • IsNotNull:等价于 SQL 中的 "is not null",比如 findByUsernameIsNotNull();
  • NotNull:与 IsNotNull 等价;
  • Like:等价于 SQL 中的 "like",比如 findByUsernameLike(String user);
  • NotLike:等价于 SQL 中的 "not like",比如 findByUsernameNotLike(String user);
  • OrderBy:等价于 SQL 中的 "order by",比如 findByUsernameOrderBySalaryAsc(String user);
  • Not:等价于 SQL 中的 "! =",比如 findByUsernameNot(String user);
  • In:等价于 SQL 中的 "in",比如 findByUsernameIn(Collection<String> userList) ,方法的参数可以是 Collection 类型,也可以是数组或者不定长参数;
  • NotIn:等价于 SQL 中的 "not in",比如 findByUsernameNotIn(Collection<String> userList) ,方法的参数可以是 Collection 类型,也可以是数组或者不定长参数;

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • JPA自定义对象接收查询结果集操作

    最近使用JPA的时候,碰到需要自定义查询结果集的场景,网上搜了一下,都是需要自定义方法写一大串代码实现的,太繁琐了,有那时间还不如用mybaits. 用JPA就是要尽量通过声明接口解决持久层问题,要不然鬼用.逼得没办法去了官网看看文档,再没有就放弃了,没时间看源码.最终找到我想要的结果了. 例如,传统的JPA接口实现如下所示: class Person { @Id UUID id; String firstname, lastname; Address address; static class

  • spring data jpa 查询自定义字段,转换为自定义实体方式

    目标:查询数据库中的字段,然后转换成 JSON 格式的数据,返回前台. 环境:idea 2016.3.4, jdk 1.8, mysql 5.6, spring-boot 1.5.2 背景:首先建立 entity 映射数据库(非专业 java 不知道这怎么说) @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long

  • SpringBoot使用JPA实现查询部分字段

    目录 SpringBoot JPA查询部分字段 自定义简单的查询方法 SpringBoot JPA查询部分字段 用过JPA的都知道,只需要继承JpaRepository 根据Jpa的函数命名规范写出接口中的函数,不需要实现,底层就可以自动解析成各种数据库的sql语句,进行增删改查等操作. 自定义简单的查询方法 如findByUserName,findByUserNameOrEmail(String username, String email)等条件的属性名称与个数要与参数的位置与个数一一对应,

  • JPA如何使用findBy方法自定义查询

    目录 JPA使用findBy方法自定义查询 在JPA中使用findBy方法自定义查询 在postman测试请求的接口如下 JPA的findBy语法整理 前提操作 JPA中支持的关键词 JPA使用findBy方法自定义查询 最近在项目中使用spring boot+jpa的方式来访问数据库,例如:本项目中的课程目录详情表中包括了外键课程详情ID,想通过课程详情ID查找出所有关联的课程目录详情 在JPA中使用findBy方法自定义查询 在postman测试请求的接口如下 这样就很方便的查询所需要的数据

  • Spring Data JPA查询方式及方法名查询规则介绍

    目录 Spring Data JPA查询方式及方法名查询规则 一.通过解析方法名创建查询 二.使用 @Query 创建查询 JPA 常用查询方法记录 CrudRepository 默认带的查询方法 简单的扩展-以字段为关键字进行查询 使用@Query 进行复杂查询 使用 Specification 进行复杂查询 Predicate CriteriaBuilder Root Spring Data JPA查询方式及方法名查询规则 Spring Data JPA 一.通过解析方法名创建查询 在执行查

  • springboot jpa 实现返回结果自定义查询

    目录 jpa返回结果自定义查询 第一种方法 第二种方法 使用jpa两张表联查返回自定义实体 1.创建一个SpringBoot空白项目,引入pom依赖 2.application.yml配置文件 3.数据库(有两张表user/address) 4.User.java和Address.java 5.UserDaoRepository.java和AddressDaoRepository.java 6.UserAddressDto.java代码 7.TestController.java jpa 返回结

  • Django ORM多对多查询方法(自定义第三张表&ManyToManyField)

    对于多对多表 - 1.自定义第三张表,更加灵活 - 2.ManyToManyField 自动生成第3张表 只能 有3列数据 不能自己添加. 自定义第三张表 # models.py class Boy(models.Model): name = models.CharField(max_length=32) class Girl(models.Model): name = models.CharField(max_length=32) class Love(models.Model): b = m

  • SpringBoot Jpa 自定义查询实现代码详解

    这篇文章主要介绍了SpringBoot Jpa 自定义查询实现代码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 持久层Domain public interface BaomingDao extends JpaRepository<BaomingBean,Integer> { @Query(value = "select distinct t.actid from BaomingBean t where t.belongs=?

  • 教你快速学会JPA中所有findBy语法规则

    目录 快速学会JPA中所有findBy语法规则 1.findBy findAllBy的区别 2.JPA中支持的关键词 JPA findBy 语法总结 1.JPA同时查询两个属性 2.表格汇总 3.Spring Data JPA框架在进行方法名解析时 4.JPA的NamedQueries 5.JPQL查询 快速学会JPA中所有findBy语法规则 1.findBy findAllBy的区别 它们之间没有区别,它们将执行完全相同的查询,当从方法名称派生查询时,Spring Data会忽略All部分.

  • Spring Data JPA框架快速入门之自定义Repository接口

    目录 自定义Repository接口 repository接口定义 使用Repository接口 自定义Repository接口 要定义一个repository接口,你首先需要自定义一个实体类专用的Repository接口.该接口必须扩展 Repository,并将其类型指定为实体类和实体类的 ID 类型. 如果你想为该实体类资源类型开放CRUD方法,请直接继承CrudRepository而不是Repository. repository接口定义 通常,你的repository接口会扩展Repo

  • Spring Boot(五)之跨域、自定义查询及分页

    跨域 前面我们初步做出了一个可以实现受保护的 REST API,但是我们没有涉及一个前端领域很重要的问题,那就是跨域请求( cross-origin HTTP request ).先来回顾一些背景知识: 跨域请求 定义:当我们从本身站点请求不同域名或端口的服务所提供的资源时,就会发起跨域请求. 例如最常见的我们很多的 css 样式文件是会链接到某个公共 CDN 服务器上,而不是在本身的服务器上,这其实就是典型的一个跨域请求.但浏览器由于安全原因限制了在脚本( script )中发起的跨域 HTT

  • mybatis-plus QueryWrapper自定义查询条件的实现

    mybatis-plus框架功能很强大,把很多功能都集成了,比如自动生成代码结构,mybatis crud封装,分页,动态数据源等等,附上官网链接https://mp.baomidou.com/,github上有代码例子,国内小伙伴推荐码云https://gitee.com/baomidou/mybatis-plus.  但是,其中还是有些小坑,文档也没有涉及的很全面,碰到问题,百度或者发issue,能力强的还是直接看源码好,一切答案都在源码中. 版本推荐用3.1.0,3.1.1及以上版本有bu

  • 使用JPA传递参数的方法

    目录 JPA传递参数的方法 第一种 第二种 浅谈JPA优缺点 一.JPA的理解 二.JPA 实体生命周期理解和总结 三.为什么要使用JPA? JPA传递参数的方法 第一种     /**      *  通过年龄来查询数据.      *  使用@Query来配置自己定义的SQL,后面的参数nativeQuery = true才是表明使用了原生的sql      *  如果不配置,默认为false,那么将使用HQL查询方式.      *      * @param age      * @re

随机推荐