spring data JPA 中的多屬性排序方式
spring data JPA的多屬性排序
在此介紹我所用的一種方式:
第一步,引包
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Order;
第二步,service方法代碼
@Override
? ? public Page<TurnOverRecord> findAll(Integer pageNum, Integer pageSize, TurnOverRecord turnOverRecord) {
//多屬性排序
//先按isTurnOver從小到大升序,再按turnOverTime升序
? ? ? ? List< Order> orders=new ArrayList< Order>();
? ? ? ? orders.add( new Order(Sort.Direction. ASC, "isTurnOver"));
? ? ? ? orders.add( new Order(Sort.Direction. ASC, "turnOverTime"));
? ? ? ? Pageable pageable= new PageRequest(pageNum - 1, pageSize, new Sort(orders));
? ? ? ? Specification<TurnOverRecord> specification = new Specification<TurnOverRecord>() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public Predicate toPredicate(Root<TurnOverRecord> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
? ? ? ? ? ? ? ? Predicate predicate = cb.conjunction();
? ? ? ? ? ? ? ? // 單屬性排序
// query.orderBy(cb.asc(root.get("isTurnOver")));
// query.orderBy(cb.desc(root.get("id")));
// query.groupBy(root.get("id"));
? ? ? ? ? ? ? ? query.distinct(true);
? ? ? ? ? ? ? ? //基礎(chǔ)條件
? ? ? ? ? ? ? ? predicate.getExpressions().add(cb.equal(root.get("flag"), 1));
? ? ? ? ? ? ? ? if (turnOverRecord != null) {
? ? ? ? ? ? ? ? ? ? 其他篩選條件
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? return predicate;
? ? ? ? ? ? }
? ? ? ? };
? ? ? ? return turnOverRecordDao.findAll(specification, pageable);
? ? }spring data JPA排序問(wèn)題(order by)
1:可以傳遞Pageable對(duì)象,其中Pageable可以包含Sort參數(shù)
2:可以傳遞Sort對(duì)象
3:可以在@Query中自己寫sql/hql語(yǔ)句 手動(dòng)添加order by
第一種和第二種方式的修改之后不用重啟eclipse
第三種方式雖然在直覺(jué)上是最簡(jiǎn)單的,但是卻需要重啟eclipse.
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java使用RabbitMQ實(shí)現(xiàn)延遲消息示例
本文介紹了在分布式系統(tǒng)中,使用RabbitMQ實(shí)現(xiàn)延遲消息處理,其中詳細(xì)闡述了RabbitMQ隊(duì)列和交換機(jī)的配置、消息的發(fā)送與接收以及死信隊(duì)列的處理,具有一定的參考價(jià)值,感興趣的可以了解一下2024-10-10
Java實(shí)現(xiàn)短信發(fā)送驗(yàn)證碼功能
這篇文章主要介紹了Java實(shí)現(xiàn)短信發(fā)送驗(yàn)證碼功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2018-10-10
java 中序列化NotSerializableException問(wèn)題解決辦法
這篇文章主要介紹了java 中序列化NotSerializableException問(wèn)題解決辦法的相關(guān)資料,這里對(duì)序列化問(wèn)題進(jìn)行描述說(shuō)明,并提供解決辦法,希望能幫助到大家,需要的朋友可以參考下2017-08-08
Java中常見(jiàn)的XML解析方法與應(yīng)用詳解
XML(eXtensible Markup Language)是一種用于存儲(chǔ)和傳輸數(shù)據(jù)的標(biāo)記語(yǔ)言,被廣泛應(yīng)用于表示和交換獨(dú)立于應(yīng)用程序和硬件平臺(tái)的結(jié)構(gòu)化信息,下面我們就來(lái)看看它的常見(jiàn)解析方法有哪些吧2024-01-01
基于Quartz定時(shí)調(diào)度任務(wù)(詳解)
下面小編就為大家?guī)?lái)一篇基于Quartz定時(shí)調(diào)度任務(wù)(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
Spring Cloud Gateway Hystrix fallback獲取異常信息的處理
這篇文章主要介紹了Spring Cloud Gateway Hystrix fallback獲取異常信息的處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
JAVA提高第八篇 動(dòng)態(tài)代理技術(shù)
這篇文章主要為大家詳細(xì)介紹了JAVA動(dòng)態(tài)代理技術(shù)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
比較java中Future與FutureTask之間的關(guān)系
在本篇文章里我們給大家分享了java中Future與FutureTask之間的關(guān)系的內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。2018-10-10
Springboot 整合RabbitMq(用心看完這一篇就夠了)
這篇文章主要介紹了Springboot 整合RabbitMq(用心看完這一篇就夠了),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12

