Spring Data JPA 如何使用QueryDsl查詢并分頁
Spring Data JPA 使用QueryDsl查詢并分頁
QProblemPoint qProblemPoint = QProblemPoint.problemPoint;
Map<String,String> map = getWhere(param);
JPAQuery<ProblemPoint> query = jpaQueryFactory
.selectFrom(qProblemPoint)
.where(
qProblemPoint.problemClassify.like(map.get("problemClassify")),//問題分類
qProblemPoint.problemLevel.like(map.get("problemLevel")),//問題級(jí)別
qProblemPoint.securityRiskEvent.like(map.get("securityRiskEvent")),//風(fēng)險(xiǎn)事件
qProblemPoint.riskItems.like(map.get("riskItems"))//安全風(fēng)險(xiǎn)項(xiàng)
);
List<ProblemPoint> list = query
.offset(param.getStart())
.limit(param.getLength()).fetch();
long count = query.fetchCount();
QProblemPoint:是編譯出來的實(shí)體query:根據(jù)條件查詢出來的集合list:根據(jù)前臺(tái)傳來的進(jìn)行分頁操作.fetch():相當(dāng)于.get() 可看出返回類型。
使用QueryDSL
補(bǔ)充springDataJpa進(jìn)行復(fù)雜動(dòng)態(tài)sql語句進(jìn)行sql查詢 實(shí)現(xiàn) 關(guān)聯(lián) 分頁等功能
@Test
public void testComplexSelect() {
QQyOnlineCall onlineCall = QQyOnlineCall.qyOnlineCall;
QClientList clientList = QClientList.clientList;
// page必須從1開始
PageRequest request = PageRequest.of(0, 10);
// 構(gòu)建復(fù)雜查詢語句
List<Tuple> result = mFactory.select(onlineCall.id, onlineCall.cUsesign, onlineCall.cYgscode, clientList.cClientname, clientList.cPhone1)
.from(onlineCall)
.leftJoin(clientList)
.on(onlineCall.cClientid.eq(clientList.id))
.where(onlineCall.cCom.eq("C0003"))
.limit(request.getPageSize()) // 單頁查詢數(shù)量
.offset(request.getPageSize() * request.getPageNumber()) // 偏移量
.fetch();
// 獲取結(jié)果
for (Tuple tuple : result) {
HashMap<String, Object> map = new HashMap<>();
map.put("id", tuple.get(onlineCall.id));
map.put("useSign", tuple.get(onlineCall.cUsesign));
map.put("ygsCode", tuple.get(onlineCall.cYgscode));
map.put("clientName", tuple.get(clientList.cClientname));
map.put("phone", tuple.get(clientList.cPhone1));
System.out.println(JsonUtils.toJson(map));
}
}
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot項(xiàng)目打包war包時(shí)無法運(yùn)行問題的解決方式
在開發(fā)工程中,使用啟動(dòng)類啟動(dòng)能夠正常啟動(dòng)并測(cè)試,下面這篇文章主要給大家介紹了關(guān)于SpringBoot項(xiàng)目打包war包時(shí)無法運(yùn)行問題的解決方式,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
Spring Gateway自定義請(qǐng)求參數(shù)封裝的實(shí)現(xiàn)示例
這篇文章主要介紹了Spring Gateway自定義請(qǐng)求參數(shù)封裝的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Spring boot監(jiān)控Actuator-Admin實(shí)現(xiàn)過程詳解
這篇文章主要介紹了Spring boot監(jiān)控Actuator-Admin實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
Java利用多線程和分塊實(shí)現(xiàn)快速讀取文件
在工作中經(jīng)常會(huì)有接收文件并且讀取落庫的需求,讀取方式都是串行讀取,所以本文主要為大家介紹一下如何利用多線程和分塊實(shí)現(xiàn)快速讀取文件,希望對(duì)大家有所幫助2023-09-09
Springboot優(yōu)化內(nèi)置服務(wù)器Tomcat優(yōu)化方式(underTow)
本文詳細(xì)介紹了Spring Boot中Tomcat和Undertow服務(wù)器的配置和優(yōu)化,包括初始線程數(shù)、最大線程數(shù)、最小備用線程數(shù)、最大請(qǐng)求數(shù)等參數(shù)的優(yōu)化建議,以及在高并發(fā)場(chǎng)景下Undertow相對(duì)于Tomcat的優(yōu)勢(shì)2024-12-12
ConstraintValidator類如何實(shí)現(xiàn)自定義注解校驗(yàn)前端傳參
這篇文章主要介紹了ConstraintValidator類實(shí)現(xiàn)自定義注解校驗(yàn)前端傳參的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06

