JPA中findBy语法规则有哪些
小编给大家分享一下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);
以上是“JPA中findBy语法规则有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341