Spring Boot和Thymeleaf整合,结合JPA实现分页效果

3 在控制器类里,添加支持分页的方法


1 @RequestMapping(“/listByPage”)

2 public ModelAndView listByPage(@RequestParam(value = “pageNum”, defaultValue = “0”) int pageNum,

3 @RequestParam(value = “pageSize”, defaultValue = “3”) int pageSize) {

4 Page stocks=stockService.getStockListByPage(pageNum, pageSize);

5 System.out.println(“total page:” + stocks.getTotalPages());

6 System.out.println(“current Page:” + pageNum);

7 ModelAndView modelAndView = new ModelAndView(“listByPage”);

8 //传递参数

9 modelAndView.addObject(“stocks”,stocks);

10 return modelAndView;

11 }

在第2行和第3行定义该方法的参数时,由于表示当前页的pageNum和每页数据个数的pageSize参数都是从url请求里以get参数的形式得到,所以在之前要加@RequestParam注解,否则的话就无法从请求里得到这两个参数。

在该方法的第4行里,调用了stockService对象的getStockListByPage方法,在传入分页参数的情况下,得到了当前页面中的数据。同时为了调试,还在第5行和第6行里,输出了当前页和每页个数的信息。

在拿到当前页面的数据后,该方法时通过第9行的方法,把它加到modelAndView对象里,并在第10行里,通过该对象,向listByPage视图返回数据。

4 编写业务逻辑方法


1 public Page getStockListByPage(int pageNum, int pageSize) {

2 Sort sort = new Sort(Sort.Direction.ASC , “ID”);

3 Pageable pageable = PageRequest.of(pageNum, pageSize, sort);

4 Page stocks = stockRepo.findAll(pageable);

5 return stocks;

6 }

在这个方法的第2行里,首先通过Sort对象,定义了“按ID进行升序排列”的排序方式,随后通过第3行的PageRequest对象,定义的分页的方式,这里表示起始数据的pageNum和每页展示数据的pageSize值,都是来自于外部传入的参数。

在确定好排序和分页的方式后,本方法在第4行里,通过调用PagingAndSortingRepository类型对象stockRepo的findAll方法,根据在参数pageable里封装好的分页和排序的方式,向MySQL的stock数据表里请求数据,并把得到的数据通过第5行的return语句返回。

5 编写Repo类


1 package prj.repo;

2 import org.springframework.data.repository.PagingAndSortingRepository;

3 import org.springframework.stereotype.Component;

4 import prj.model.Stock;

5 @Component

6 public interface StockRepo extends PagingAndSortingRepository<Stock, Integer> { }

从第6行的代码里大家能看到,该Repo类实现( implements)了JPA里包含分页和排序功能的PagingAndSortingRepository接口,由于在StockService里调用的findAll方法已经封装在该JPA接口里了,所以这里在StockRepo类里,甚至不需要再写代码。

6 在application.yml文件里编写JPA和Thymeleaf的配置参数


1 spring:

2 jpa:

3 show-sql: true

4 hibernate:

5 dll-auto: validate

6 datasource:

7 url: jdbc:mysql://localhost:3306/stock?serverTimezone=GMT

8 username: root

9 password: 123456

10 driver-class-name: com.mysql.jdbc.Driver

11 thymeleaf:

12 enabled: true

13 content-type: text/html

14 check-template-location: true

15 cache: false

16 prefix: classpath:/templates/

17 suffix: .html

其中在第1行到第10行的代码里,给出了JPA和MySQL的相关定义,而在第11行到第17行的代码里,给出了Thymeleaf模板的参数。

这里用到的配置参数,其实在前文里都已经说明过,不过请注意第2行和第11行的缩进,根据yml配置文件的缩进格式,第11行的thymeleaf其实是和第2行的jpa同级,它们均属于第1行的spring的子级配置。

7 添加listByPage.html页面,实现分页的效果


根据配置,该文件是需要放在resources/templates目录里,具体代码如下。

1

2

3

4

5 库存列表

6

7

8

9

10 库存编号

11 库存货物

12 数量

13 描述

14

15

16

17

18

19

20

21

22

23

    24

    • 25 首页

      26

      27

    • 28

      29

      30

    • 31

      32

      33

    • 34 尾页

      35

      36

      37

      38
      自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

      深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

      因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

      既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

      由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

      如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

      img

      总结

      三个工作日收到了offer,头条面试体验还是很棒的,这次的头条面试好像每面技术都问了我算法,然后就是中间件、MySQL、Redis、Kafka、网络等等。

      • 第一个是算法

      关于算法,我觉得最好的是刷题,作死的刷的,多做多练习,加上自己的理解,还是比较容易拿下的。

      而且,我貌似是将《算法刷题LeetCode中文版》、《算法的乐趣》大概都过了一遍,尤其是这本

      《算法刷题LeetCode中文版》总共有15个章节:编程技巧、线性表、字符串、栈和队列、树、排序、查找、暴力枚举法、广度优先搜索、深度优先搜索、分治法、贪心法、动态规划、图、细节实现题

      最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官?

      《算法的乐趣》共有23个章节:

      最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官?

      最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官?

      • 第二个是Redis、MySQL、kafka(给大家看下我都有哪些复习笔记)

      基本上都是面试真题解析、笔记和学习大纲图,感觉复习也就需要这些吧(个人意见)

      最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官?

      • 第三个是网络(给大家看一本我之前得到的《JAVA核心知识整理》包括30个章节分类,这本283页的JAVA核心知识整理还是很不错的,一次性总结了30个分享的大知识点)

      最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官?

      《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
      见)

      [外链图片转存中…(img-GLWRfclU-1713296603929)]

      • 第三个是网络(给大家看一本我之前得到的《JAVA核心知识整理》包括30个章节分类,这本283页的JAVA核心知识整理还是很不错的,一次性总结了30个分享的大知识点)

      [外链图片转存中…(img-KPMpnoMH-1713296603929)]

      《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

    • 4
      点赞
    • 4
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值