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ù)的排序
建立分頁對象:
Pageable pageable = new PageRequest(pageNum, size);
在Repository中定義相應(yīng)的方法:
Page<ECardEntity> findByOrderBySeqNumAsc(Pageable pageable);
這里使用默認(rèn)的字段拼接形成的方法名,從而自動(dòng)解析形成對應(yīng)的方法。
方法2: 基于自定義的@Query進(jìn)行排序
Pageable的對象定義與方法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對象的聲明:
Sort sort = new Sort(Direction.ASC, "seqNum"); Pageable pageable = new PageRequest(pageNum, size, sort);
這里將Sort字段作為構(gòu)造方法的入口參數(shù),創(chuàng)建了Pageable對象。
在Repository無需聲明任何新的方法,直接使用JpaRepository中繼承而來的findAll(Pageable pageable)方法即可。
在Service中調(diào)用具體Repository中的方法如下:
Page<ECardEntity> eCardEntities = this.eCardRepo.findAll(pageable);
總結(jié)
這幾種方法都是非常簡單易用的,這里對于這個(gè)排序的簡單需求來說,方法是最為簡單的,無需在Repository進(jìn)行任何的方法聲明直接使用即可。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java使用Runnable接口創(chuàng)建線程的示例代碼
在Java中,多線程編程是實(shí)現(xiàn)并發(fā)操作的重要手段之一,通過多線程,程序可以同時(shí)執(zhí)行多個(gè)任務(wù),從而提高應(yīng)用程序的效率和響應(yīng)速度,Java提供了多種創(chuàng)建線程的方式,其中實(shí)現(xiàn)Runnable接口是最常見且推薦的方式之一,本文將詳細(xì)介紹如何使用Runnable接口創(chuàng)建線程2025-02-02
springboot?log4j2日志框架整合與使用過程解析
這篇文章主要介紹了springboot?log4j2日志框架整合與使用,包括引入maven依賴和添加配置文件log4j2-spring.xml的相關(guān)知識(shí),需要的朋友可以參考下2022-05-05
Spring Boot 2.4版本前后的分組配置變化及對多環(huán)境配置結(jié)構(gòu)的影響(推薦)
這篇文章主要介紹了Spring Boot 2.4版本前后的分組配置變化及對多環(huán)境配置結(jié)構(gòu)的影響,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
SpringBoot Controller Post接口單元測試示例
今天小編就為大家分享一篇關(guān)于SpringBoot Controller Post接口單元測試示例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12
在Java中實(shí)現(xiàn)讓線程按照自己指定的順序執(zhí)行
這篇文章主要介紹了在Java中實(shí)現(xiàn)讓線程按照自己指定的順序執(zhí)行,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06

