SpringBoot中JPA實(shí)現(xiàn)Sort排序的三種方式小結(jié)
引言: 在Spring Boot應(yīng)用中,基于數(shù)據(jù)某個(gè)字段進(jìn)行排序是一個(gè)非常常用的需求,這里將給出Sort的三種常用用法,基于分頁的應(yīng)用,大家可以各取所需,擇機(jī)使用。
環(huán)境說明
Spring 4.2 Spring Boot 1.5.11 Java 8
前置說明
ECardEntity.java的定義:
import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Table; import com.jd.ai.fasion.util.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; @Entity @Table(name="t_ebusiness_card") @Data @EqualsAndHashCode(callSuper=true) public class ECardEntity extends BaseEntity { private static final long serialVersionUID = 6580526495176090890L; @Column private String name; @Column(name="zip_url") private String zipUrl; @Column(name="thumb_url") private String thumbUrl; @Column(name="seq_num") private int seqNum; }
這里的seqNum是排序字段,基于升序來排序。
Repository的定義:
@Repository public interface EBusinessCardRepository extends JpaRepository<ECardEntity, Long> { ///方法的定義 }
方法1: 基于特殊參數(shù)的排序
建立分頁對(duì)象:
Pageable pageable = new PageRequest(pageNum, size);
在Repository中定義相應(yīng)的方法:
Page<ECardEntity> findByOrderBySeqNumAsc(Pageable pageable);
這里使用默認(rèn)的字段拼接形成的方法名,從而自動(dòng)解析形成對(duì)應(yīng)的方法。
方法2: 基于自定義的@Query進(jìn)行排序
Pageable的對(duì)象定義與方法1中相同。
在Repository中定義相應(yīng)的JPL語句:
@Query("select e from ECardEntity e ORDER BY e.seqNum ASC") Page<ECardEntity> findInOrders(Pageable pageable);
方法3: 基于Pageable中的Sort字段
Pageable對(duì)象的聲明:
Sort sort = new Sort(Direction.ASC, "seqNum"); Pageable pageable = new PageRequest(pageNum, size, sort);
這里將Sort字段作為構(gòu)造方法的入口參數(shù),創(chuàng)建了Pageable對(duì)象。
在Repository無需聲明任何新的方法,直接使用JpaRepository中繼承而來的findAll(Pageable pageable)方法即可。
在Service中調(diào)用具體Repository中的方法如下:
Page<ECardEntity> eCardEntities = this.eCardRepo.findAll(pageable);
總結(jié)
這幾種方法都是非常簡(jiǎn)單易用的,這里對(duì)于這個(gè)排序的簡(jiǎn)單需求來說,方法是最為簡(jiǎn)單的,無需在Repository進(jìn)行任何的方法聲明直接使用即可。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot基于keytool實(shí)現(xiàn)https的雙向認(rèn)證示例教程
這篇文章主要介紹了springboot基于keytool實(shí)現(xiàn)https的雙向認(rèn)證,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06Java實(shí)現(xiàn)的計(jì)時(shí)器【秒表】功能示例
這篇文章主要介紹了Java實(shí)現(xiàn)的計(jì)時(shí)器【秒表】功能,結(jié)合實(shí)例形式分析了Java結(jié)合JFrame框架的計(jì)時(shí)器功能相關(guān)操作技巧,需要的朋友可以參考下2019-02-02SpringBoot進(jìn)行參數(shù)校驗(yàn)的方法詳解
在日常的接口開發(fā)中,為了防止非法參數(shù)對(duì)業(yè)務(wù)造成影響,經(jīng)常需要對(duì)接口的參數(shù)進(jìn)行校驗(yàn)。本文通過示例詳細(xì)講解了SpringBoot如何進(jìn)行參數(shù)校驗(yàn)的,感興趣的可以學(xué)習(xí)一下2022-04-04java運(yùn)行jar包提示?“XXX中沒有主清單屬性”?"找不到主類”兩種解決辦法
本文主要介紹了java運(yùn)行jar包提示?“XXX中沒有主清單屬性”?"找不到主類”兩種解決辦法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06Spring Cloud 優(yōu)雅下線以及灰度發(fā)布實(shí)現(xiàn)
這篇文章主要介紹了Spring Cloud 優(yōu)雅下線以及灰度發(fā)布實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Spring @ExceptionHandler注解統(tǒng)一異常處理和獲取方法名
這篇文章主要介紹了Spring注解之@ExceptionHandler 統(tǒng)一異常處理和獲取方法名,在實(shí)際項(xiàng)目中,合理使用@ExceptionHandler能夠提高代碼的可維護(hù)性和用戶體驗(yàn),通過本文的解析和實(shí)踐,讀者可以更好地理解和掌握@ExceptionHandler的用法和原理2023-09-09