skyADMIN

spring-data-jpa 查找最新一条记录

spring-data-jpa把对数据库的操作封装得很好,用起来灰常方便,但是英语不好的硬伤使我没读过它的完整的文档,所以今天遇到一个问题,浪费我两个小时查找,最后做个记录。

先啰嗦下环境,springboot框架,dao层的接口继承Crudrepository接口,让spring-data-jpa来生成具体实现。就是比如我想通过name字段来查找,我可以简单地写:

public Iterable<TestEntity> findByName();

因为name字段的结果可能不是唯一。用一个迭代器来装返回的结果。我只需要用实体对象里的属性,大写首字母,按规定的格式写方法名,框架会自动帮我实现。复杂的,或者想手工调优的,可以用@Query注解跟jpql语句。

我想查找数据库里某张表最新一条记录,我第一反应是不能直接靠方法名来搞定了,得自己手写sql语句,用@Query注解,结果一查,这个注解里需要的是JP QL,和标准的sql不一样。显然我,并不会,JP QL。

那我考虑先找到标准的sql语句,再对着改成jpql,然后发现jpql里没有sql里的limit。我只想要最新的一条。这就,尴尬了。

然后我找了半天jpql里怎么实习limit,然并卵,直到后来发现了,有人提到spring-data-jpa有

List<User> findTop20ByLastname(String lastname, Sort sort);

这种写法,查前20条可以这样写,查第一条会不会有findFrist酱紫呢。搜 spring-data-jpa findFrist,然后进官方文档(http://docs.spring.io/spring-data/jpa/docs/current/reference/html/),搜索页面上的关键字(findfirst),找到相关部分:

246D5641-ED6D-4716-B6FA-B3CBF67F76B8

好了我的问题解决了。简直是浪费时间。

码字很辛苦,转载请注明来自环宇博客《spring-data-jpa 查找最新一条记录》

评论