教你快速学会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部分。唯一重要的一点是By关键字,其后面的任何内容都被视为字段名称

如 findXXXXXXXXXXXXXByName 实际上==》 findByName

2、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 类型,也可以是数组或者不定长参数;

JPA findBy 语法总结

1、JPA同时查询两个属性

其中一个是embedded class的属性

findByIdageAndTime(int age, Date time)

2、表格汇总

3、Spring Data JPA框架在进行方法名解析时

会先把方法名多余的前缀截取掉,比如 find、findBy、read、readBy、get、getBy,然后对剩下部分进行解析。

4、JPA的NamedQueries

在实体类上使用@NamedQuery,示例如下:

@NamedQuery(name = "UserModel.findByAge",query = "select o from UserModel o where o.age >= ?1")

在自己实现的DAO的Repository接口里面定义一个同名的方法,示例如下:

public List findByAge(int age);

然后就可以使用了,Spring会先找是否有同名的NamedQuery,如果有,那么就不会按照接口定义的方法来解析。

5、JPQL查询

  @Query("from SysUser u where u.nickname=:nickname")
    SysUser findUser(@Param("nickname") String nickname);
    @Query("from SysUser u where u.nickname like  %:nickname% order by u.fans desc")
    List<SysUser> findUsers(@Param("nickname") String nickname);

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

(0)

相关推荐

  • Spring data jpa的使用与详解(复杂动态查询及分页,排序)

    一. 使用Specification实现复杂查询 (1) 什么是Specification Specification是springDateJpa中的一个接口,他是用于当jpa的一些基本CRUD操作的扩展,可以把他理解成一个spring jpa的复杂查询接口.其次我们需要了解Criteria 查询,这是是一种类型安全和更面向对象的查询.而Spring Data JPA支持JPA2.0的Criteria查询,相应的接口是JpaSpecificationExecutor. 而JpaSpecifica

  • Spring Data Jpa的四种查询方式详解

    这篇文章主要介绍了Spring Data Jpa的四种查询方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.调用接口的方式 1.基本介绍 通过调用接口里的方法查询,需要我们自定义的接口继承Spring Data Jpa规定的接口 public interface UserDao extends JpaRepository<User, Integer>, JpaSpecificationExecutor<User> 使用这

  • 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

  • 教你快速学会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部分.

  • 六分钟带你快速学会react中的useMemo

    目录 概念 useMemo 栗子 筛选偶数 每秒获取时间刷新页面 如何优化 useCallback.React.memo 总结 概念 react 中是通过一次次的 re-render (重新渲染)保持我们的值及时的更新到页面上的,每次重新渲染都是一次快照,可以把它想象成一张张的照片,在某个时刻它应该是什么样子的 useMemo 把创建函数和依赖数组项作为参数传入 useMemo,它仅仅会在数组依赖项中的值改变时才会重新计算值 这种优化有助于避免在每次渲染时都进行高开销的计算 useMemo 的函

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

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

  • 三分钟教你如何在IDEA中快速创建工程的方法

    1. 创建Java工程 1. 打开的初始界面 Create New Project:创建一个新的工程 Import Project:导入一个现有的工程 Open:打开一个已有工程.比如:可以打开 Eclipse 项目. Check out from VersionControl:可以通过服务器上的项目地址 check out Github上面项目或其他 Git 托管服务器上的项目 2. 新建项目 如果要创建 Web 工程,则需要勾选上面的 Web Application.如果不需要创建 Web

  • 值得收藏!教你如何在IDEA中快速查看Java字节码

    一.javap的参数 -help  --help  -?        输出此用法消息   -version                 版本信息   -v  -verbose             输出附加信息   -l                       输出行号和本地变量表   -public                  仅显示公共类和成员   -protected               显示受保护的/公共类和成员   -package              

  • 教你如何快速在CentOS7中安装Nginx

    目录 1.概述 2.下载Nginx安装包 3.安装依赖包 4.将Nginx安装包拷贝到CentOS7系统并解压 6.编译并安装 7.启动Nginx 8.Nginx的常用命令 9.综述 1.概述 nginx是我们在开发Java项目时,必不可少的一个工具,大多数时候用于反向代理后端服务器,达到负载均衡.解决高并发的目的. 在大多数时候,Nginx的安装和配置是由运维人员完成的,但在一些没有运维岗位的公司,还是需要开发人员来做这项工作. 今天我们就只图快不图细的讲解一下如何在CentOS7系统下快速安

  • 教你怎么在IDEA中创建java多模块项目

    一.使用spring initializr创建java工程 1.启动IDEA,新建java工程,使用向导创建一个springboot框架的工程 2.设置项目信息,java版本选择8 3.勾选项目需要用到的依赖 4.设置项目名称,点击完成 5.等待maven将项目所需要的依赖都下载完毕,展开项目结构,如下图所示,这就创建完一个springboot框架的简单工程 二.修改工程,添加web模块 1.修改appdemo工程的pom文件,修改工程打包方式为pom,这样项目就变成了一个父工程 <packag

  • 教你快速搭建sona服务及idea使用sona的方法

    目录 Sonar概述 一. 搭建sona服务 二.idea配置 三. 配置maven的setting.xml文件 四.idea中 mvn sonar:sonar 执行命令 五 访问sona查看问题 六.汉化 Sonar概述 Sonar 是一个用于代码质量管理的开放平台.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具.与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是简单地把不同的代码检查工具结果(例如 FindBugs,PMD 等)

  • 快速学会Dubbo的配置环境及相关配置

    目录 1. Dubbo相关概念 1.1 自动服务发现工作原理 2. 启动文件 2.1 zookeeper-3.4.11\bin\zkServer.cmd 2.2 zookeeper-3.4.11\bin\zkCli.cmd 2.3 java -jar dubbo-admin-0.0.1-SNAPSHOT.jar 2.4 dubbo-monitor-simple-2.0.0\assembly.bin\start.bat 3. 修改项目文件 3.1 在pom.xml文件里导入相关依赖 3.2 在ap

  • 教你快速上手Selenium爬虫,万物皆可爬

    目录 一.基本使用 二.查找节点 2.1 查找单个节点 2.2 查找多个节点 三.节点交互 四.动作链 五.执行 JavaScript 代码 六.获取节点信息 七.管理 Cookies 八.改变节点属性的值 一.基本使用 selenium 的基本使用步骤: 打开浏览器: 获取浏览器页面的特定内容: 控制浏览器页面上的控件,如向一个文本框中输入一个字符串: 关闭浏览器. 示例: from selenium import webdriver from selenium.webdriver.commo

随机推荐