zoukankan      html  css  js  c++  java
  • 分页查询功能

    分页:select * from 表名 limit ?,?;(第一个?是查询的其实位置《(当前页数-1)*每页显示的数据量》,第二个?是查询的数据条数)


    传递两个参数 : 当前页数(pageCode  由页面传递过来) 、每页显示的数据条数(pageSize 有自己设定)
    另一个必要数据量:  总数据量(totalRecord 利用数据库查询语句查询)


    再根据当前页数算出上一页,下一页等参数
    利用总数据量来得出总页数:总数据量/每页的数据量


    利用封装javabean的方法将页数和查询出来的结果集封装到一起,便于在展示页面调用 ${实体类名.属性名}


    实体类层、dao层、service层、servlet层依次进行开发

    实体层:
    构建pageCode(当前页码),pageSize(每页数据条数),totalPage(总页数),totalRecord(总数据条数),userList(数据结果集)的实体类

    public class PageBean {
    private int pageCode;//当前页码
    private int pageSize;//每页数据条数
    private int totalPage;//总页数
    private int totalRecord;//总数据条数

    private List<Map<String,Object>> userList;//用来存储查询出来的结果集

    public int getPageCode() {
    return pageCode;
    }

    public void setPageCode(int pageCode) {
    this.pageCode = pageCode;
    }

    public int getPageSize() {
    return pageSize;
    }

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

    public int getTotalPage() {
    return totalPage;
    }

    public void setTotalPage(int totalPage) {
    this.totalPage = totalPage;
    }

    public int getTotalRecord() {
    return totalRecord;
    }

    public void setTotalRecord(int totalRecord) {
    this.totalRecord = totalRecord;
    }

    public List<Map<String, Object>> getUserList() {
    return userList;
    }

    public void setUserList(List<Map<String, Object>> userList) {
    this.userList = userList;
    }
    }

     dao层:

    写一个分页查询方法的接口:

    public interface IUserDao {
    public PageBean findByPage(int pageCode, int pageSize);
    }

    然后对这个接口进行实现:

    public class UserDaoImpl implements IUserDao {
    //pageCode是当前页码数
    //pageSize是页面显示的条数
    @Override
    public PageBean findByPage(int pageCode, int pageSize) {
    PageBean pg=new PageBean();
    String sql="select * from user limit ?,?";
    //根据pageCode和pageSize计算出limit的参数
    //第一个?是查询的起始位,用当前页码减一再乘每页的显示的条数
    int firstRow=(pageCode-1)*pageSize;
    //第二个?是每次查询的数据条数
    int secondRow=pageSize;
    //调用DButils中的查询方法,查询出来结果集
    System.out.println(firstRow+" "+secondRow);
    List<Map<String, Object>> maps = DButils.executeQuery(sql,firstRow,secondRow);
    System.out.println("分页查询数据...............");
    System.out.println(maps);
    //将结果集合添加到PageBean中
    pg.setUserList(maps);


    //查询一下表中总数据量
    String sql2="select count(*) as num from user";
    List<Map<String, Object>> maps1 = DButils.executeQuery(sql2);
    System.out.println("总数据量 "+maps1);
    int totalRecord=0;
    if(maps1!=null&&maps1.size()>0){
    // int totalPage =(int) maps1.get(0).get("num"); java中默认从map中查找出来的数据是lang型,无法向下转为int
    totalRecord = Integer.parseInt(maps1.get(0).get("num") + "");
    System.out.println("总数据量"+totalRecord);
    }
    //计算出总页数
    int totalPage=totalRecord%secondRow==0?totalRecord/secondRow:totalRecord/secondRow+1;
    System.out.println("总页数"+totalPage);
    pg.setPageCode(pageCode);
    pg.setTotalPage(totalPage);
    pg.setPageSize(pageSize);
    return pg;
    }
    }

    service层:

    写分页查询的接口和实现类:

    接口:

    import com.aaa.entity.PageBean;

    public interface IUserService {
    public PageBean findByPage(int pageCode, int pageSize);
    }

    实现类:

    import com.aaa.dao.IUserDao;
    import com.aaa.dao.UserDaoImpl;
    import com.aaa.entity.PageBean;
    import com.aaa.service.IUserService;

    public class UserServiceImpl implements IUserService {
    private IUserDao userDao=new UserDaoImpl();
    @Override
    public PageBean findByPage(int pageCode, int pageSize) {
    return userDao.findByPage(pageCode,pageSize);
    }
    }

    servlet层:

    @WebServlet("/PS")
    public class PageServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.println("进入分页servlet");
    String pageC = req.getParameter("pageCode");
    int pageCode=1;//第一次登录系统默认第一页
    if(pageC!=null&&pageC.trim().length()>0){
    pageCode=Integer.parseInt(pageC);
    }
    //赋值给pageSize,每页显示的数据数量
    int pageSize=3;
    IUserService userService = new UserServiceImpl();
    PageBean byPage = userService.findByPage(pageCode, pageSize);
    System.out.println(byPage);
    req.setAttribute("users",byPage);
    req.getRequestDispatcher("index.jsp").forward(req,resp);
    }
    }

    前端页面显示:

    <%@ 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>
    <p>用户信息展示</p>
    <table border="1px">
    <tr>
    <td>序号</td>
    <td>用户名</td>
    <td>电话</td>
    <td>昵称</td>
    </tr>
    <c:forEach items="${users.userList}" var="user" varStatus="i">
    <tr>
    <td>${i.index+1}</td>
    <td>${user.username}</td>
    <td>${user.telephone}</td>
    <td>${user.nickname}</td>
    </tr>
    </c:forEach>
    </table>
    ${users.pageCode}页/共${users.totalPage}页
    <a href="<c:url value="/PS?pageCode=1"/>">首页</a>
    <c:if test="${users.pageCode>1}">
    <a href="<c:url value="/PS?pageCode=${users.pageCode-1}"/>">上一页</a>
    </c:if>
    <c:if test="${users.pageCode<users.totalPage}">
    <a href="<c:url value="/PS?pageCode=${users.pageCode+1}"/>">下一页</a>
    </c:if>
    <a href="<c:url value="/PS?pageCode=${users.totalPage}"/>">尾页</a>
    </body>
    </html>
  • 相关阅读:
    paip.提升性能并行多核编程哈的数据结构list,set,map
    paip.网页右键复制菜单限制解除解决方案
    paip.java swt 乱码问题解决
    paip.哈米架构CAO.txt
    paip.提升性能协程“微线程”的使用.
    paip.最省内存的浏览器评测 cah
    paip.云计算以及分布式计算的区别
    paip.提升性能string split
    paip.提升分词准确度常用量词表
    paip.提升中文分词准确度新词识别
  • 原文地址:https://www.cnblogs.com/fbbg/p/11106501.html
Copyright © 2011-2022 走看看