一、分頁查詢
因為PagingAndSortingRepository,我們總是可以傳入Sort和Pageable對查詢結果進行排序和分頁(支持命名查詢、Example查詢和Query查詢)。
// 當查詢方法中有多個參數的時候,Pageable/Sort建議做為最后一個參數傳入 @Query("select u from User u") Page<User> findALL(Pageable pageable); Page<User> findByNickName(String nickName, Pageable pageable); // 可以返回Page<T>對象,也可以返回List<T>對象
此外,JPA不支持Limit,請采用其他方法實現limit需求,https://stackoverflow.com/questions/44565820/what-is-the-limit-clause-alternative-in-jpql
二、自定義查詢
如涉及到刪除和修改需要加上@Modifying,添加@Transactional支持事務,查詢超時的設置等。
@Transactional(timeout = 10) @Modifying @Query("update User set userName = ?1 where id = ?2") int modifyById(String userName, Long id); @Transactional @Modifying @Query("delete from User where id = ?1") void deleteById(Long id);