Spring Boot + Kotlin 分页
进行简单的分页。
- 表示する量の制限
能够做到这些。
前提条件(环境/完成图)
- 基本的なWeb開発ができて、CRUDもできている人向け(GetMappingの説明などは省いています)
画完了
环境
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"
}
-
- 添加org.springframework.data.domain.Pageable
-
- 向index函数的参数中添加“pageable: Pageable”
-
- 从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))
-
- 调用getfindAll函数。
-
- 从Repository层(bookRepository)调用findAll函数。
- 将PageRequest.of(page, size)作为参数传入。
※ PageRequest.of(何ページ目を表示するのか, どれだけ表示したいのか) -> 数値で設定する
※ pageable.pageNumberは、pageableリクエストに含まれる単一の値です。
Page request [number: 2,・・・・・] このようにレスポンスが返ってきます。
然后……
3. 存储库 kù)
override fun findAll(pageable: Pageable): Page<クラス名>
-
- 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进行实现的案例印象很少,所以我希望以后能够逐渐输出一些内容。