Spring Boot + Kotlin 分页

进行简单的分页。

    表示する量の制限

能够做到这些。

前提条件(环境/完成图)

    基本的なWeb開発ができて、CRUDもできている人向け(GetMappingの説明などは省いています)

画完了

スクリーンショット 2020-01-29 16.36.36.png

环境

VersionKotlin1.3.60spring Boot2.2.2

展示页码

只需要一个选项: “进行的地方(文件)是”

    • Service

 

    • Controller

 

    Repository

控制器

import org.springframework.data.domain.Pageable

@GetMapping("/")
    fun index(model: Model, pageable: Pageable): String { // pageable: Pageableを追加

        val bookinfo = bookInfoservice.getfindAll(pageable) // bookInfoserviceから、getfindAll関数を呼び出す(引数は「pageable」にする)
        model.addAttribute("bookdata", bookinfo)

        return "Book/index"
    }
    1. 添加org.springframework.data.domain.Pageable

 

    1. 向index函数的参数中添加“pageable: Pageable”

 

    1. 从Service层(此处为bookInfoservice)调用getfindAll函数

 

    参数中添加pageable

然后… …)

2. 质量服务

import org.springframework.data.domain.Pageable
import org.springframework.data.domain.PageRequest

fun getfindAll(pageable: Pageable) = bookRepository.findAll(PageRequest.of(pageable.pageNumber, 5))
    1. 调用getfindAll函数。

 

    1. 从Repository层(bookRepository)调用findAll函数。

 

    将PageRequest.of(page, size)作为参数传入。

※ PageRequest.of(何ページ目を表示するのか, どれだけ表示したいのか) -> 数値で設定する
※ pageable.pageNumberは、pageableリクエストに含まれる単一の値です。

Page request [number: 2,・・・・・] このようにレスポンスが返ってきます。

然后……

3. 存储库 kù)

override fun findAll(pageable: Pageable): Page<クラス名>
    1. findAll函数是默认内置的,所以需要进行override(覆盖)并定义函数。(如果是新函数,则不需要进行override。)

 

    返回类型是Page<类名>就可以了!

※Page<类名>… 类名可以是在实体内的数据类名,或者在创建数据库时使用的类名。

4. 完成了。在Thymeleaf的一侧,使页面可翻转。


<div th:fragment='pagination'>
    <ul>
       <li th:class="${bookdata.first}" style="display:inline">
          <span th:if="${bookdata.first}">←先頭</span>
          <a th:if="${not bookdata.first}" th:href="@{${url}(page=0)}">←先頭</a>
       </li>
       <li th:each='i : ${#numbers.sequence(0, bookdata.totalPages-1)}' th:class="(${i}==${bookdata.number})? 'active' : ''" style="display:inline">
         <span th:if='${i}==${bookdata.number}' th:text='${i+1}'>1</span>
         <a th:href="@{${url}(page=${i})}">
            <span th:text='${i+1}'>1</span>
         </a>
       </li>
       <li th:class="${bookdata.last}" style="display:inline">
        <span th:if="${bookdata.last}">末尾➝</span>
        <a th:if="${not bookdata.last}" th:href="@{${url}(page=(${bookdata.totalPages}-1))}">末尾➝</a>
       </li>
   </ul>
</div>

※ 可以通过bookdata.number获取当前页面的数字。

结束了!

总结

    • 基本的な(CRUDが入っている)実装があれば、コードを少し追加するだけで完成できるかもしれない。

 

    PageableとPageの使い方でページネーションの実装は可能であること

我的想法

我在使用Spring Boot实现这次的分页时遇到了很多困难,因为大部分文章都是使用Java进行的。而且由于我对使用Kotlin + Spring Boot进行实现的案例印象很少,所以我希望以后能够逐渐输出一些内容。

广告
将在 10 秒后关闭
bannerAds