Spring Boot DB連携

Spring BootのWEBの一覧画面上でページング処理を実装してみた(ソースコード編)

今回も引き続き、Spring Bootの一覧画面上でのページング処理の実装について述べる。ここでは、具体的なサンプルプログラムのソースコードを共有する。

前提条件

下記記事を参照のこと。

Spring BootのWEBの一覧画面上でページング処理を実装してみた(完成イメージと前提条件)今回は、Spring Bootの一覧画面上でページング処理を実装してみたので、そのサンプルプログラムを共有する。 ページング処理で...

作成したサンプルプログラムの内容

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上図の赤枠は、前提条件に記載したソースコードと比較し、変更になったソースコードを示す。赤枠のソースコードについては今後記載する。

まず、SQL文を発行するMapperのXMLファイルと、Mapperクラスの内容は以下の通り。findBySearchFormメソッドの内容を変更している。



上記Mapperクラスで参照している「org.springframework.data.domain.Pageable」クラスは、Spring Dataに入っているため、build.gradleにそのインポート定義を追加している。

さらに、サービスクラスとその実装の内容は、以下の通り。demoFormListメソッドを変更し、getPageable・getAllPageNumの各メソッドを追加している。



また、application.propertiesに「demo.list.pageSize」を追加している。この値を、先ほどの「DemoServiceImpl.java」内で取得し利用している。



さらに、「SearchForm.java」に、「一覧画面の現在ページ数」を追加している。「SearchForm.java」はセッションスコープで保持される。



また、コントローラクラスの内容は以下の通り。一覧画面表示に関する「search」等のメソッドを変更するとともに、「先頭へ」「前へ」「次へ」「最後へ」リンク押下処理を追加している。



さらに、一覧画面の「list.html」の内容は以下の通り。先頭ページでは「先頭へ」「前へ」リンクを非表示に、最終ページでは「次へ」「最後へ」リンクを非表示に設定している。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/java/tree/master/spring-boot-paging-2/demo

要点まとめ

  • ページング処理を実装するには、ページネーションオブジェクトであるPageableを利用して、一覧を表示するSQL文に「Xレコード目~Yレコード目」という制限を加えると共に、現在ページ数をセッションにもたせた上で、ページングを行うリンクやボタン毎に、コントローラクラスのメソッドを作成すればよい。