解決Querydsl Order By時,對字段爲空值時的排序控制

項目整體環境介紹

開發工具: idea 2019.3.1 旗艦破解版
構建工具: maven 3.9
java環境: 1.8
SpringBoot:2.2.1
數據庫: musql 5.7
ORM: JPA,跟隨SpringBoot版本
Querydsl: 4.2.1

Querydsl 用法

使用了Querydsl之後發現遇到問題時,解決的方法很少,且官網有bug更新也不及時,例如使用group having語法時,分頁會導致報錯,2017年就已經發到git issue上了,一直到現在還沒解決,在開發項目時,只能一點點探索,在這做個筆記,也希望能幫助遇到類似問題的小夥伴!如何將querydsl引入項目,再次不做介紹,自己搜一下就行.

Order by中的小技巧

問題描述 :

在使用order by進行排序時,字段默認值爲null,null值在數據庫中值時最小的,在使用orderBy時,asc所有的null值都在最前面,相反則在後面,這時我們想控制null得順序

解決辦法:

使用mysql語法時,我們可以使用 if 語法加個隱藏排序字段,使用querydsl可以直接在orderBy(user.age.asc().nullsFirst()) 或者orderBy(user.age.asc().nullsLast()) 來控制null是在前面和後面的問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章