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

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

相关文章

  • 使用Spring AntPathMatcher的doMatch方法

    使用Spring AntPathMatcher的doMatch方法

    这篇文章主要介绍了使用Spring AntPathMatcher的doMatch方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 介绍java中Pair(配对)

    介绍java中Pair(配对)

    这篇文章主要介绍了介绍java中Pair(配对),示例描述使用Pair类实现简单Integer到String的映射,示例中getKey方法返回key对象,getValue方法返回对应值对象,需要的朋友可以参考下
    2023-03-03
  • 详解使用spring cloud config来统一管理配置文件

    详解使用spring cloud config来统一管理配置文件

    这篇文章主要介绍了详解使用spring cloud config来统一管理配置文件,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • spring boot starter actuator(健康监控)配置和使用教程

    spring boot starter actuator(健康监控)配置和使用教程

    这篇文章主要介绍了spring-boot-starter-actuator(健康监控)配置和使用教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • Java String类用法详解

    Java String类用法详解

    今天给大家带来的是关于Java的相关知识,文章围绕着Java String类用法展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • SpringBoot项目实现分布式日志链路追踪

    SpringBoot项目实现分布式日志链路追踪

    这篇文章主要给大家介绍了Spring Boot项目如何实现分布式日志链路追踪,文中通过代码示例给大家介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • Java实现ArrayList排序的方法详解

    Java实现ArrayList排序的方法详解

    Java中常见的ArrayList排序方法主要为三种:JDK8的stream、Comparator#compare()和Comparable#compareTo(),本文将详解这三者的使用,需要的可以参考一下
    2022-05-05
  • spring 如何解决循环依赖

    spring 如何解决循环依赖

    这篇文章主要介绍了spring 如何解决循环依赖,帮助大家更好的理解和学习使用spring框架,感兴趣的朋友可以了解下
    2021-02-02
  • java排序去重示例分享

    java排序去重示例分享

    这篇文章主要介绍了java排序去重示例,对String strs = "ZZZ BBB AAA OOO ZZZ AAA ZZZ"计算出现个数,排序去重,需要的朋友可以参考下
    2014-02-02
  • java Swing实现五子棋游戏

    java Swing实现五子棋游戏

    这篇文章主要为大家详细介绍了java Swing实现五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12

最新评论