Play2.4(Ebean4)のfindPagedListでページング
ページングを実装しようと思い、方法を探していたのだけれど…
どこのページを見てもfindPagingList()
しか載ってない。
でもPlay2.4でライブラリとして使っているEbeanではfindPagingList()
が削除されていて、
findPagedList()
に置き換わっていた。
github覗いてみる。
使い方
今までの'findPagingList()'はこんな使い方(使ったことないけど)
public List<Item> findPageItems(Integer page){ Model.Finder<Long, Item> finder = new Model.Finder<>(Item.class); return finder .orderBy("id desc") .findPagingList(MAX_ITEM_PER_PAGE) .getPage(page) .getList(); }
それをこうする。
public PagedList<Item> getPagedList(Integer page){ Model.Finder<Long, Item> finder = new Model.Finder<>(Item.class); return finder .orderBy("id desc") .findPagedList(page, MAX_ITEM_PER_PAGE); } public List<Item> findPageItems(Integer page){ return getPagedList(page).getList(); }
別メソッドに分けたけど、別に分けなくていいと思う。
PagedList
が取得できたら、そこから指定したページのアイテムリストを取得する。
他にも、次のページ・前のページが有るかどうかや、最大ページ数なども取得できる。
getList()
は取得結果のリストがキャッシュされる。
getTotalPageCount()
やhasNext()
は同じキャッシュ(futureRowCount)をつかうみたい。
以上