Springboot+PageHelper实现分页(前后端简单展示)

2023-05-16

Springboot+PageHelper实现分页(前后端简单展示)

  • 创建表及赋值

    
    --创建表
    DROP TABLE IF EXISTS `page_learn`;
    CREATE TABLE `page_learn` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '唯一标识',
      `t_name` varchar(255) NOT NULL COMMENT 't家族名字',
      `t_brithday` datetime DEFAULT NULL COMMENT '出生日期',
      `t_hobbies` varchar(255) DEFAULT NULL COMMENT '爱好',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
    ​
    --插入数据
    INSERT INTO `page_learn` VALUES ('1', 'T一', '2022-04-28 14:53:57', '足球,篮球');
    INSERT INTO `page_learn` VALUES ('2', 'T二', '2020-08-19 14:54:38', '足球');
    INSERT INTO `page_learn` VALUES ('3', 'T三', '2022-04-05 14:57:00', '羽毛球');
    INSERT INTO `page_learn` VALUES ('4', 'T四', '2022-04-06 14:57:30', '乒乓球');
    INSERT INTO `page_learn` VALUES ('5', 'T五', '2022-04-12 14:58:16', '排球');
    INSERT INTO `page_learn` VALUES ('6', 'T六', '2022-04-05 14:58:40', '篮球,排球');
    INSERT INTO `page_learn` VALUES ('7', 'T七', '2022-04-13 14:59:12', '羽毛球,乒乓球');
    INSERT INTO `page_learn` VALUES ('8', 'T八', '2022-04-05 15:01:03', '足球,篮球');
    INSERT INTO `page_learn` VALUES ('9', 'T九', '2022-04-29 15:01:24', '篮球,排球');
    INSERT INTO `page_learn` VALUES ('10', 'T十', '2022-05-08 15:01:51', '排球');  

  • 创建springboot时,勾选好mybatis,mysql,theamleaf。

  • pom.xml

    
     <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>1.2.8</version>
            </dependency>  

  • application.properties

    
    # 应用名称
    spring.application.name=my
    # 应用服务 WEB 访问端口
    server.port=8080
    #下面这些内容是为了让MyBatis映射
    #指定Mybatis的Mapper文件
    mybatis.mapper-locations=classpath:mappers/*xml
    #指定Mybatis的实体目录
    mybatis.type-aliases-package=com.my.pojo
    # 数据库驱动:
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    # 数据源名称
    spring.datasource.name=defaultDataSource
    # 数据库连接地址
    spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&characterEncoding=UTF-8
    # 数据库用户名&密码:
    spring.datasource.username=root
    spring.datasource.password=123456
    # THYMELEAF (ThymeleafAutoConfiguration)
    # 开启模板缓存(默认值: true )
    spring.thymeleaf.cache=false
    # 检查模板是否存在,然后再呈现
    spring.thymeleaf.check-template=true
    # 检查模板位置是否正确(默认值 :true )
    spring.thymeleaf.check-template-location=true
    #Content-Type 的值(默认值: text/html )
    spring.thymeleaf.content-type=text/html
    # 开启 MVC Thymeleaf 视图解析(默认值: true )
    spring.thymeleaf.enabled=true
    # 模板编码
    spring.thymeleaf.encoding=UTF-8
    # 要被排除在解析之外的视图名称列表,⽤逗号分隔
    spring.thymeleaf.excluded-view-names=
    # 要运⽤于模板之上的模板模式。另⻅ StandardTemplate-ModeHandlers( 默认值: HTML5)
    spring.thymeleaf.mode=HTML5
    # 在构建 URL 时添加到视图名称前的前缀(默认值: classpath:/templates/ )
    spring.thymeleaf.prefix=classpath:/templates/
    # 在构建 URL 时添加到视图名称后的后缀(默认值: .html )
    spring.thymeleaf.suffix=.html
    ​
    pagehelper.helper-dialect=mysql
    pagehelper.reasonable=true
    pagehelper.support-methods-arguments=true  

  • 实体类

    
    package com.my.pojo;
    ​
    import java.util.Date;
    ​
    public class PageT {
        private Integer id;
        private String name;
        private Date brithday;
        private String hobbies;
    ​
        public PageT(){
    ​
        }
    ​
        public PageT(Integer id, String name, Date brithday, String hobbies) {
            this.id = id;
            this.name = name;
            this.brithday = brithday;
            this.hobbies = hobbies;
        }
    ​
        public Integer getId() {
            return id;
        }
    ​
        public void setId(Integer id) {
            this.id = id;
        }
    ​
        public String getName() {
            return name;
        }
    ​
        public void setName(String name) {
            this.name = name;
        }
    ​
        public Date getBrithday() {
            return brithday;
        }
    ​
        public void setBrithday(Date brithday) {
            this.brithday = brithday;
        }
    ​
        public String getHobbies() {
            return hobbies;
        }
    ​
        public void setHobbies(String hobbies) {
            this.hobbies = hobbies;
        }
    ​
        @Override
        public String toString() {
            return "PageT{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", brithday=" + brithday +
                    ", hobbies='" + hobbies + '\'' +
                    '}';
        }
    }  

  • mapper层

    
    //mappwer接口
    package com.my.mapper;
    import com.github.pagehelper.Page;
    import com.github.pagehelper.PageInfo;
    import com.my.pojo.PageT;
    import org.apache.ibatis.annotations.Mapper;
    ​
    import java.util.List;
    ​
    @Mapper
    public interface TMapper {
        List<PageT> pages();
    }  
    
    <!--mapper.xml-->
    <?xml version="1.0" encoding="UTF8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.my.mapper.TMapper">
        <select id="pages" resultType="com.my.pojo.PageT">
            select id,t_name as name,t_brithday as brithday,t_hobbies as hobbies from page_learn
        </select>
    </mapper>  

  • 因为主要实现分页展示,没有写service层

  • controller层

    
    package com.my.controller;
    ​
    import com.github.pagehelper.PageHelper;
    import com.github.pagehelper.PageInfo;
    import com.my.mapper.TMapper;
    import com.my.pojo.PageT;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    ​
    import java.util.List;
    ​
    @Controller
    public class PageController {
    ​
        @Autowired
        private TMapper tMapper;
    ​
        @RequestMapping("/page")
        public String page1(Model model,@RequestParam(defaultValue = "1",value = "pageNum")int pageNum){
    ​
            PageHelper.startPage(pageNum,4);
            List<PageT> list=tMapper.pages();
            PageInfo<PageT> pages=new PageInfo<>(list);
            model.addAttribute("pageInfo",pages);
            return "formList";
        }
    }  

  • formList.html

    
    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>数据页</title>
        <!-- CSS -->
        <link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" rel="stylesheet">
        <!-- jQuery and JavaScript Bundle with Popper -->
        <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js"></script>
    </head>
    <body>
    <view th:class="container" style="padding:60px">
        <table class="table table-striped table-dark">
            <thead>
            <tr>
                <th scope="col">id</th>
                <th scope="col">name</th>
                <th scope="col">brithday</th>
                <th scope="col">hobbies</th>
            </tr>
            </thead>
            <tbody>
            <tr th:each="page:${pageInfo.getList()}">
                <th scope="row">[[${page.id}]]</th>
                <td>[[${page.name}]]</td>
                <td>[[${#dates.format(page.brithday,'yyyy-MM-dd')}]]</td>
                <td>[[${page.hobbies}]]</td>
            </tr>
            </tbody>
        </table>
    </view>
    <view class="container1">
        <view class="row">
            <view class="col" style="text-align:center">
                数据共[[${pageInfo.getTotal()}]]条 &nbsp;&nbsp;当前第[[${pageInfo.getPageNum()}]]页/共[[${pageInfo.getPages()}]]页
            </view>
            <view class="col">
                <nav aria-label="Page navigation example">
                <ul class="pagination">
                    <li class="page-item"><a class="page-link" th:href="@{/page}">首页</a></li>
                    <li class="page-item"><a class="page-link" th:href="@{/page(pageNum=${pageInfo.hasPreviousPage}?${pageInfo.prePage}:1)}">上一页</a></li>
                    <li class="page-item"><a class="page-link" th:href="@{/page(pageNum=${pageInfo.hasNextPage}?${pageInfo.nextPage}:${pageInfo.pages})}">下一页</a></li>
                    <li class="page-item"><a class="page-link" th:href="@{/page(pageNum=${pageInfo.pages})}">尾页</a></li>
                </ul>
            </nav>
            </view>
        </view>
    </view>
    </body>
    </html>  
    • 效果

    •  

    • 自己的坑

      1. 最开始是将PageInfo对象一步一步拆分,传数据给页面的。改了之后直接传pageInfo对象。

      2. 使用PageInfo应看一看源码。了解pageInfo其中的方法。

      3. page与PageInfo的关系。(我看过了,想看的自己查。)

    • 总结pageHelper方法

      
          @Test
          public void pageInfo() {
              PageHelper.startPage(1, 4);
              List<PageT> list = tMapper.pages();
              PageInfo<PageT> pageInfo=new PageInfo<>(list);
      //        PageInfo.getList()
              for (PageT t:pageInfo.getList()) {
                  System.out.println(t);
              }
      //        总数据条数
              long totalNum=pageInfo.getTotal();
      //        总页面数
              int totalPages=pageInfo.getPages();
      //        当前页面
              int currentPage=pageInfo.getPageNum();
      //        是否有下一页
              boolean nextPage=pageInfo.isHasNextPage();
      //        是否有上一页
              boolean prePage=pageInfo.isHasPreviousPage();
      //        是否首页
              boolean firstPage=pageInfo.isIsFirstPage();
      //        是否尾页
              boolean lastPage=pageInfo.isIsLastPage();
      
              System.out.println("总数据条数"+totalNum);
              System.out.println("总页面数"+totalPages);
              System.out.println("是否有下一页"+nextPage);
              System.out.println("是否有上一页"+prePage);
              System.out.println("是否首页"+firstPage);
              System.out.println("是否尾页"+lastPage);
      
          }
      
      /**
      *
          PageT{id=1, name='T一', brithday=Thu Apr 28 22:53:57 CST 2022, hobbies='足球,篮球'}
          PageT{id=2, name='T二', brithday=Wed Aug 19 22:54:38 CST 2020, hobbies='足球'}
          PageT{id=3, name='T三', brithday=Tue Apr 05 22:57:00 CST 2022, hobbies='羽毛球'}
          PageT{id=4, name='T四', brithday=Wed Apr 06 22:57:30 CST 2022, hobbies='乒乓球'}
          总数据条数10
          总页面数3
          是否有下一页true
          是否有上一页false
          是否首页true
          是否尾页false
      */  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Springboot+PageHelper实现分页(前后端简单展示) 的相关文章

随机推荐

  • JAVA 包装类

    1 概念 Java是一个面向对象的编程语言 xff0c 但是Java中的八种基本数据类型却是不面向对象的 xff0c 为了使用方便和解决这个不足 xff0c 在设计类时为每个基本数据类型设计了一个对应的类进行代表 xff0c 这样八种基本数
  • swagger被拦截器拦截

    配置swagger文档 xff0c 被拦截器拦截不能使用 拦截器中添加以下配置 xff0c 适当修改即可使用 重写addInterceptors registry addInterceptor new UserInterceptor add
  • JAVA之JDBC连接数据库

    前景说明 xff1a 在我们刚开始使用数据库的时候 xff0c 发现只能在mysql编辑器里面使用sql语句来完成对数据库的操作 xff0c 那我们怎么来通过Java来操控数据库呢 xff1f 这个时候就有了JDBC的出现 1 什么是JDB
  • Css margin 和 float浮动

    1 浮动 定义 浮动是css里面布局最多的一个属性 xff0c 也是很重要的一个属性 float xff1a 表示浮动的意思 它有四个值 none 表示不浮动 xff0c 默认right xff1a 表示右浮动left 表示左浮动 floa
  • Java Servlet组件

    1 什么是Servlet xff1f 从广义上来讲 xff0c Servlet规范是Sun公司制定的一套技术标准 xff0c 包含与Web应用相关的一系列接口 xff0c 是Web应用实现方式的宏观解决方案 而具体的Servlet容器负责提
  • JAVA 之 Ajax

    1 什么是Ajax xff1f AJAX xff08 Asynchronous Javascript And XML xff09 翻译成中文就是 异步Javascript和XML 即是用Javascript语言与服务器进行异步交互 xff0
  • Servlet 的Request和Response

    1 Request和Response概述 1 Request 获取请求数据 浏览器会发送HTTP请求到后台服务器 Tomcat HTTP的请求中会包含很多请求数据 请求行 43 请求头 43 请求体 后台服务器 Tomcat 会对HTTP请
  • 链接标签的使用

    什么是链接 xff1f 链接相当于是一个传送门 xff0c 点击链接就可以从该页面 xff0c 跳转到其他页面 xff0c 或者从该页面跳转到该页面的其他地方 链接的表现形式有哪些 xff1f 链接可以 表现为文字 xff0c 图片 xff
  • 报错 java: 程序包org.apache.ibatis.annotations不存在

    今天在使用mybatis运行项目时 xff0c 项目忽然报错了 xff0c 检查了自己的pom xml文件也没有问题 xff0c 报错情况如图 xff1a 在网上找了一大堆方法 xff0c 都没有解决问题 xff0c 这里附上一个网上的常用
  • spring框架

    文章内容 介绍spring框架 为什么要使用spring框架 如何使用spring IOC控制反转 1 介绍spring框架 1 spring是一个轻量级开源的JAVAEE框架 2 Spring提高了IOC和AOP IOC 控制反转 把创建
  • Ubuntu忘记密码怎么办 如何重置Ubuntu登入密码

    1 首先重新启动Ubuntu系统 xff0c 然后快速按下shift键 xff0c 以调出grub启动菜单 2 在这里我们选择第二个 xff08 Ubuntu高级选项 xff09 xff0c 选中后按下Enter键 3 选择第二个recov
  • 快速掌握e语言,以js语言对比,快速了解掌握。

    易语言 xff0c 怎么调试输出 xff0c 查看内容 在js语言里 xff0c 弹窗是 alert 在易语言里 xff0c 弹窗是 信息框 弹出显示内容 0 标题 在js语言里 xff0c 调试输出是 console log 在易语言里
  • java 实现Comparable接口排序,升序、降序、倒叙

    本人由于项目开发中需要对查询结果list进行排序 xff0c 这里根据的是每一个对象中的创建时间降序排序 本人讲解不深 xff0c 只实现目的 xff0c 如需理解原理还需查阅更深的资料 1 实现的效果 2 创建排序的对象 package
  • gitbash不能粘贴

    点击鼠标滚轮或者shift 43 ins
  • Hive安装与配置常见问题解决

    欢 43 迎使用Markdown编辑器 提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 目录 前言一 Hive是什么 xff1f 二 安装步骤1 引入jar包2 配置步骤1 hive s
  • 【Linux】生产者消费者模型

    文章目录 1 生产者消费者模型1 1生产者消费者模型的特点1 2生产者消费者模型的原则1 3生产者消费者模型的优点 2 基于阻塞队列的生产者消费者模型2 1如何理解生产者消费者模型的并发 xff1f 3 信号量3 1信号量接口3 2基于环形
  • Ubuntu设置允许root用户登录

    Ubuntu激活root用户 sudo passwd root 设置root密码 设置允许root通过ssh默认登录 vim etc ssh sshd config root权限编辑 PermitRootLogin yes 在第一行添加内容
  • python编写程序统计一元人民币换成一分、两分和五分的所有兑换方案个数(用while循环)

    a 61 int input 34 输入钱数 xff08 单位 xff1a 元 xff09 34 e 61 a 100 count 61 0 i 61 1 while i lt e 5 43 1 i 43 61 1 b 61 e 5 i 2
  • springboot简易整合mybatis

    SpringBoot整合Mybatis篇 实现单表mybatis整合 准备sql 创建数据库 create database if not exists 96 mybatis 96 修改数据库默认字节编码 alter database 96
  • Springboot+PageHelper实现分页(前后端简单展示)

    Springboot 43 PageHelper实现分页 前后端简单展示 创建表及赋值 创建表 DROP TABLE IF EXISTS 96 page learn 96 CREATE TABLE 96 page learn 96 96 i