天天看點

Spring data jpa sort多屬性排序問題

  最近在用spring data jpa ,其中涉及到使用sort進行排序問題。對于正常的排序我們可以用如下方式進行聲明:

Sort sort=new Sort(Direction.ASC,"id"); 
           

  其中第一個參數表示是降序還是升序(此處表示升序),第二個參數表示你要按你的entity(記住是entity中聲明的變量,不是資料庫中表對應的字段)中的那個變量進行排序。這個式子很容易認識。但是問題來了,如果目前我有三個字段:age、pgrade、dnum分别表示年齡、級别、部門編号。那麼我要先按age降序再按pgrade升序、再按dnum降序怎麼辦。

  這個時候就用到了我今天想說的一個類(趁還沒忘)Order,記住 這個order一定要是import org.springframework.data.domain.Sort.Order;這個包下面的。然後我們建立三個order分别為如下:

Order order2 = new Order(Direction.DESC, "age");
		Order order3 = new Order(Direction.ASC, "pgrade");
		Order order = new Order(Direction.DESC, "dnum");
           

  不要在意前面的名字,無傷大雅。那麼我們現在的問題是建立他們三個有什麼用呢,我們要用的是sort呀,有用。在sort中有種構造方法如下:

Spring data jpa sort多屬性排序問題

那麼我們目前的任務就是把這三個order放到list裡面然後把list放到sort裡面這麼簡單。不過這裡要注意,添加到list中的先後直接關聯着排序的優先級,如下:

list.add(order2);
		list.add(order3);
		list.add(order);
		Sort sort1 = new Sort(list);
           

那麼就完成了