Spring MVC @SortDefault多欄位排序

myskies發表於2021-12-09

在SpringMVC中,我們可以使用@SortDefault@PageableDefault來快速的完成Pageable的預設排序。

我們能查詢到的大多數是對某一個欄位進行排序:

@PageableDefault(sort = {"weight"}, direction = Sort.Direction.DESC)
                                 Pageable pageable
@SortDefault(sort = {"weight"}, direction = Sort.Direction.ASC) Pageable pageable

或者對某幾個欄位進行排序,但排序的規則是相同的(比如均為升序):

@SortDefault(sort = {"weight", "createTime"}, direction = Sort.Direction.ASC) Pageable pageable

如果我們想設定多個排序欄位,且各個排序欄位的排序方式還不一致,則可以使用如下程式碼:

  public Page<Notice> page(@SortDefault.SortDefaults({
      @SortDefault(sort = {"weight"}, direction = Sort.Direction.ASC),
      @SortDefault(sort = {"createTime"}, direction = Sort.Direction.DESC)})
                                 Pageable pageable) {

此時,上述程式碼便起到了先按weight進行升序排列,然後再按createTime進行逆序排序。

相關文章