• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

分页查询

武飞扬头像
素心如月桠
帮助1

一、例题
学新通

二、分页查找的SQL语句

select * from 表名 limit 0,20;//第一页
select * from 表名 limit 20,20;//第二页
select * from 表名 limit 40,20;//第三页

三、要解决的问题

3.1

对于Sql语句,我们在Service层要给queryRunner.query()方法的参数就是limit后面的两个数字,分别代表从第几行开始,查多少行
但是例题中我们是通过上一页,下一页的a标签来赋值的
所以,要通过点击 1的操作, 1的操作是对第几页进行的,queryRunner.query()要给的参数却是第几行,查多少行
解决办法:
定义一个Page实体类,通过Page的pageIndex(页码)属性,计算出第几行
通过Page的pageSize(页大小)属性,定义查多少行
通过Page的pageStartRow(起始行)属性,定义第几行
例如:点击a标签后,页码pageIndex 1,要显示下一页,我们通过计算可得
要显示的第几行pageStartRow =(pageIndex-1)* pageSize,
例如要显示第三页,即pageIndex = 3,假设一次显示5行数据pageSize = 5,我们通过计算可得
要显示的第几行pageStartRow = ( 3 - 1 )*5 = 10,插入到sql语句里面

select * from 表名 limit 10,5;//第三页

3.2

当我们点击下一页到了最后一页的时候,后面没有数据了,要设置a标签不能再点击
同样的上一页到了pageIndex = 1后也不能点击
所以在Page实体类中还有定义一个属性totalPage(总页码)
然而总页码可以通过查询总行数来计算,所以再定义一个属性totalRows(总行数)
通过totalPage的set方法,当totalRows被赋值时,直接给totalPage赋值

public void setTotalRows(Integer totalRows) {
        this.totalRows = totalRows;
        this.setTotalPage(totalRows % pageSize == 0 ? totalRows / pageSize : totalRows / pageSize   1);

    }

3.3 Page实体类

package com.qf.project.entity;

public class Page {
    private Integer pageStartRow;
    private Integer pageIndex;
    private Integer pageSize;
    private Integer totalRow;
    private Integer totalPages;

    public Page(Integer pageIndex) {
        this.pageIndex = pageIndex;
        this.pageSize = 5;
        this.setPageStartRow((pageIndex - 1) * 5);
    }

    public Page(Integer pageIndex, Integer pageSize) {
        this.pageIndex = pageIndex;
        this.pageSize = pageSize;
        this.setPageStartRow((pageIndex - 1) * pageIndex);
    }

    public Integer getPageStartRow() {
        return pageStartRow;
    }

    public void setPageStartRow(Integer pageStartRow) {
        this.pageStartRow = pageStartRow;
    }

    public Integer getPageIndex() {
        return pageIndex;
    }

    public void setPageIndex(Integer pageIndex) {
        this.pageIndex = pageIndex;
    }

    public Integer getPageSize() {
        return pageSize;
    }

    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }

    public Integer getTotalRow() {
        return totalRow;
    }

    public void setTotalRow(Integer totalRow) {
        this.totalRow = totalRow;
        this.setTotalPages(totalRow % pageSize == 0 ? totalRow / pageSize : totalRow / pageSize   1);
    }

    public Integer getTotalPages() {
        return totalPages;
    }

    public void setTotalPages(Integer totalPages) {
        this.totalPages = totalPages;
    }
}

学新通

Dao层

   public List<Product> selectAll(Page page) {
        List<Product> productList = new ArrayList<>();
        try {
            productList = queryRunner.query(DbUtils.getConnection(),"select *from product limit ?,?",new BeanListHandler<Product>(Product.class),page.getPageStartRows(),page.getPageSize());
            return productList;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

Service层

    public List<Product> showAll(Page page) {
        List<Product> productList = new ArrayList<>();
        try {
            DbUtils.begin();
            long t = productDao.selectCount();
            page.setTotalRows((int)t);
            productList = productDao.selectAll(page);

            DbUtils.commit();
        } catch (Exception e) {
            DbUtils.rollback();
            e.printStackTrace();
        }

        return productList;
    }
学新通

ShowAllProductController

@WebServlet(name = "ShowAllProductController", value = "/admin/safe/showAllProductController")
public class ShowAllProductController extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String pageIndex = request.getParameter("pageIndex");
        if (pageIndex == null) {
            pageIndex = "1";
        }
        Page page = new Page(Integer.valueOf(pageIndex));
        ProductService productService = new ProductServiceImpl();
        List<Product> productList = productService.showAll(page);
        request.setAttribute("products", productList);
        request.setAttribute("page", page);
        request.getRequestDispatcher("/admin/safe/showAllProduct.jsp").forward(request, response);
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}
学新通

五、ShowAllProduct.jsp

<%@ page import="text.frist.Emp.entity.Product" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<table border="1">
    <tr>
        <td>商品ID</td>
        <td>商品名</td>
        <td>商品价格</td>
        <td>商品生产日期</td>
        <td>删除商品</td>
        <td>增加商品</td>
    </tr>
    <c:forEach var="p" items="${products}">
        <tr>
            <td>${p.id}</td>
            <td>${p.name}</td>
            <td>${p.price} </td>
            <td>${p.firstdate} </td>
            <td>
                <a href="<c:url context='${pageContext.request.contextPath}' value='/admin/safe/removeProductController?id=${p.id}'></c:url>">删除</a>
            </td>
            <td>
                <a href="<c:url context='${pageContext.request.contextPath}' value='/admin/safe/addProductInfo.jsp'></c:url>">增加</a>
            </td>
        </tr>
    </c:forEach>
    <tr>
        <td colspan="6">
            <a href="<c:url context='${pageContext.request.contextPath}' value='/admin/safe/showAllProductController?pageIndex=1'></c:url>">首页</a>&nbsp;
            &nbsp;
            <c:if test="${page.pageIndex > 1}">
                <a href="<c:url context='${pageContext.request.contextPath}' value='/admin/safe/showAllProductController?pageIndex=${page.pageIndex - 1}'></c:url>">上一页</a>&nbsp;
            </c:if>
            <c:if test="${page.pageIndex == 1}">
                <a>上一页</a>
            </c:if>
            <c:if test="${page.pageIndex < page.totalPage }">
            <a href="<c:url context='${pageContext.request.contextPath}' value='/admin/safe/showAllProductController?pageIndex=${page.pageIndex   1}'></c:url>">下一页</a>&nbsp;
            </c:if>
            <c:if test="${page.pageIndex == page.totalPage }">
                <a>下一页</a>
            </c:if>
            <a href="<c:url context='${pageContext.request.contextPath}' value='/admin/safe/showAllProductController?pageIndex=${page.totalPage}'></c:url>">尾页</a>&nbsp;

        </td>
    </tr>
</table>
</body>
</html>

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhibfgaj
系列文章
更多 icon
同类精品
更多 icon
继续加载