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

 更新时间:2021年11月20日 11:13:21   作者:zhw0596  
这篇文章主要介绍了教你快速学会JPA中所有findBy语法规则,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

快速学会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);

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

相关文章

  • java 中HttpClient传输xml字符串实例详解

    java 中HttpClient传输xml字符串实例详解

    这篇文章主要介绍了java 中HttpClient传输xml字符串实例详解的相关资料,需要的朋友可以参考下
    2017-04-04
  • SpringCloud:feign对象传参和普通传参及遇到的坑解决

    SpringCloud:feign对象传参和普通传参及遇到的坑解决

    这篇文章主要介绍了SpringCloud:feign对象传参和普通传参及遇到的坑解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java数据结构之二叉查找树的实现

    Java数据结构之二叉查找树的实现

    二叉查找树(亦称二叉搜索树、二叉排序树)是一棵二叉树,且各结点关键词互异,其中根序列按其关键词递增排列。本文将通过示例详细讲解二叉查找树,感兴趣的可以了解一下
    2022-03-03
  • Java操作redis实现增删查改功能的方法示例

    Java操作redis实现增删查改功能的方法示例

    这篇文章主要介绍了Java操作redis实现增删查改功能的方法,涉及java操作redis数据库的连接、设置、增删改查、释放资源等相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • Java删除String中指定字符的11种方法汇总

    Java删除String中指定字符的11种方法汇总

    这篇文章主要给大家介绍了关于Java删除String中指定字符的11种方法,在Java中String类提供了许多方法来处理字符串,其中包括删除指定字符的方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • springboot聚合工程的部署与深入讲解

    springboot聚合工程的部署与深入讲解

    最近在写一个商城,使用Maven聚合工程来管理,但是其中搭建环境遇见了各种的坑,下面这篇文章主要给大家介绍了关于springboot聚合工程部署的相关资料,需要的朋友可以参考下
    2021-11-11
  • SpringBoot集成Curator实现Zookeeper基本操作的代码示例

    SpringBoot集成Curator实现Zookeeper基本操作的代码示例

    Zookeeper是一个Apache开源的分布式的应用,为系统架构提供协调服务,ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户,本文给大家介绍了SpringBoot集成Curator实现Zookeeper基本操作,需要的朋友可以参考下
    2024-05-05
  • Java线程之程安全与不安全代码示例

    Java线程之程安全与不安全代码示例

    这篇文章主要介绍了Java线程之程安全与不安全代码示例,还是比较不错的,这里分享给大家,供需要的朋友参考。
    2017-11-11
  • Java中StringBuffer和StringBuilder_动力节点Java学院整理

    Java中StringBuffer和StringBuilder_动力节点Java学院整理

    StringBuffer、StringBuilder和String一样,也用来代表字符串。String类是不可变类,StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象。本文重点给大家介绍String、StringBuffer、StringBuilder区别,感兴趣的朋友一起看看吧
    2017-04-04
  • SpringBoot 定时任务遇到的坑

    SpringBoot 定时任务遇到的坑

    这篇文章主要介绍了SpringBoot 定时任务遇到的坑,今天踩的这个坑和 cron 表达式有关,文中给大家介绍了cron 表达式的解释,需要的朋友一起看看吧
    2017-11-11

最新评论