Java实现分页代码

下面是Java实现分页代码的完整攻略。

确定分页参数

Java实现分页代码的第一步就是要确定分页参数,常见的分页参数有:当前页码、每页显示的记录数、总记录数、总页数等。

计算总页数

需要先根据每页记录数和总记录数计算出总页数。计算方法是将总记录数除以每页显示的记录数,如果余数大于0,则总页数需要加1。

// 计算总页数
int totalPage = totalRecord / pageSize;       
if (totalRecord % pageSize > 0) {
    totalPage++;
}

查询当前页数据

根据分页参数查询当前页的数据。在SQL语句中使用LIMIT关键字限制查询结果的范围。

// SELECT * FROM table LIMIT offset, pageSize
String sql = "SELECT * FROM table LIMIT ?, ?";
List<Object> params = new ArrayList<Object>();
params.add((currentPage - 1) * pageSize);
params.add(pageSize);
List<Map<String, Object>> data = jdbcTemplate.queryForList(sql, params.toArray());

构建分页导航栏

分页导航栏可以让用户方便地切换不同页码的数据。一般情况下,分页导航栏可以显示当前页、总页数、首页、上一页、下一页、尾页等信息。

// 构建分页导航栏
StringBuilder sb = new StringBuilder();
sb.append("当前第" + currentPage + "页,共" + totalPage + "页");
if (currentPage > 1) {
    sb.append("<a href='?page=1'>首页</a>");
    sb.append("<a href='?page=" + (currentPage - 1) + "'>上一页</a>");
}
if (currentPage < totalPage) {
    sb.append("<a href='?page=" + (currentPage + 1) + "'>下一页</a>");
    sb.append("<a href='?page=" + totalPage + "'>尾页</a>");
}

示例1:SpringBoot分页实现

下面是使用SpringBoot框架实现分页的示例代码。

@GetMapping("/users")
public String getAllUser(@RequestParam(defaultValue = "1") int page,
                         @RequestParam(defaultValue = "10") int size,
                         Model model) {
    int totalRecord = userService.countUser();
    int totalPage = totalRecord / size;
    if (totalRecord % size > 0) {
        totalPage++;
    }
    List<User> users = userService.getUserByPage((page - 1) * size, size);
    model.addAttribute("users", users);
    model.addAttribute("totalPage", totalPage);
    model.addAttribute("currentPage", page);
    return "user-list";
}

示例2:JSP分页实现

下面是使用JSP页面实现分页的示例代码。

<%
int currentPage = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page"));
int pageSize = 10;
int totalRecord = userService.countUser();
int totalPage = totalRecord / pageSize;
if (totalRecord % pageSize > 0) {
    totalPage++;
}
List<User> users = userService.getUserByPage((currentPage - 1) * pageSize, pageSize);
%>
<table>
    <thead>
        <tr>
            <th>ID</th>
            <th>姓名</th>
            <th>年龄</th>
        </tr>
    </thead>
    <tbody>
        <% for (User user : users) { %>
        <tr>
            <td><%= user.getId() %></td>
            <td><%= user.getName() %></td>
            <td><%= user.getAge() %></td>
        </tr>
        <% } %>
    </tbody>
</table>
<div>
    当前第<%= currentPage %>页,共<%= totalPage %>页 
    <% if (currentPage > 1) { %>
    <a href="?page=1">首页</a>
    <a href="?page=<%= currentPage - 1 %>">上一页</a>
    <% } %>
    <% if (currentPage < totalPage) { %>
    <a href="?page=<%= currentPage + 1 %>">下一页</a>
    <a href="?page=<%= totalPage %>">尾页</a>
    <% } %>
</div>

以上就是Java实现分页代码的完整攻略,希望可以对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现分页代码 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • Spring Boot+微信小程序开发平台保存微信登录者的个人信息

    这里提供一份完整的“Spring Boot + 微信小程序开发平台保存微信登录者的个人信息”的攻略,下面将分为以下几个方面进行讲解。 1. 小程序登录流程 在小程序中,用户登录的流程如下: 用户进入小程序,点击登录按钮。 微信端会弹出授权窗口,提示用户是否授权小程序登录。 用户点击同意授权后,微信将会返回一个 code 值给小程序端。 小程序端通过 code…

    Java 2023年6月3日
    00
  • Java栈的三种实现方式(完整版)

    Java栈的三种实现方式 什么是栈 栈(Stack)是一种常见的数据结构,它的特点是后进先出(LIFO,Last In First Out),就是存入栈的元素的顺序是先后顺序,最后存入的元素最先取出。栈只允许在栈顶进行插入和删除操作。 在程序中,栈常用于实现递归、函数调用和表达式求值等相关操作。 栈的实现方式 Java语言中,栈的实现通常有以下三种方式: 继…

    Java 2023年5月18日
    00
  • 详解Java利用实现对称加密(DES、3DES、AES)

    详解Java利用实现对称加密(DES、3DES、AES) 介绍 对称加密是指加密与解密使用相同的密钥,具有加密速度快、适合加密大文件等优点。常用的对称加密算法有DES、3DES、AES等。 Java SE 提供了对称加密的实现,可以通过 javax.crypto 包中的 Cipher 类完成对称加密和解密操作。在此文中,我们将深入剖析如何使用 Cipher …

    Java 2023年5月19日
    00
  • Spring框架七大模块简单介绍

    下面是关于“Spring框架七大模块简单介绍”的完整攻略,包含两个示例说明。 Spring框架七大模块简单介绍 Spring框架是一个开源的Java应用程序框架,它提供了一系列的模块来帮助开发者构建企业级应程序。Spring框架的七大模块分别是:核心容器、数据访问/集成、Web、AOP、消息、测试和Instrumentation。本文将对这七大模块进行简单介…

    Java 2023年5月17日
    00
  • jsp 开发之struts2中s:select标签的使用

    JSP开发之Struts2中S:select标签的使用 在Struts2中使用s:select标签可以方便地创建下拉框,通过本文,您可以了解s:select标签的使用方法,包括其属性和示例。 基本语法 <s:select name="selectName" list="listValue" value=&quot…

    Java 2023年6月15日
    00
  • Java中Thread类的使用和它的属性

    一、Thread类的使用 在Java中,多线程的实现主要通过Thread类来完成。通过继承Thread类并重写run()方法来实现多线程的功能。 具体步骤如下: 1.定义Thread类的子类,并重写其run()方法 2.在run()方法中编写并发执行的代码。 3.调用Thread类中的start()方法,就可以启动线程。 举个例子,如下所示: public …

    Java 2023年5月19日
    00
  • java字符串反转的7种方法

    下面是“Java字符串反转的7种方法”的完整攻略: 概述 字符串反转是一个常见的操作,Java提供了多种方法实现字符串反转。本文总结了7种Java字符串反转方法,包括StringBuffer、StringBuilder、toCharArray、递归、CharSequence等方法。 方法一:使用StringBuilder或StringBuffer的rever…

    Java 2023年5月26日
    00
  • Java日常练习题,每天进步一点点(15)

    Java日常练习题,每天进步一点点(15)攻略 1. 概述 该练习题是为Java初学者推出的每日练习题之一,旨在帮助学习者巩固基础知识和加强编程能力。该练习题包含多个小任务,每天完成一部分,不断积累,每天进步一点点。 2. 练习题详解 该练习题目录如下: 1. 编写一个Java程序来寻找两个整数中的最大值 该任务要求我们编写程序寻找两个整数中的最大值,可以使…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部