首页 > 其他分享 >分页查询功能

分页查询功能

时间:2023-02-08 11:33:37浏览次数:36  
标签:功能 rows 分页 int list 查询 totalCount currentPage public

分页查询功能分析

好处:

  减轻服务器内存的开销

  提升用户体验

分析具体步骤

PageBean实体类:

package com.example.domain;

import java.util.List;

/*
    分页对象(分页查询实体类)
 */
public class PageBean<T> {
    private int totalCount;// 总记录数
    private int totalPage;// 总页码
    private List<T> list;// 每页数据 list集合
    private int currentPage;// 当前页码
    private int rows;// 每页显示的条数



    @Override
    public String toString() {
        return "PageBean{" +
                "totalCount=" + totalCount +
                ", totalPage=" + totalPage +
                ", list=" + list +
                ", currentPage=" + currentPage +
                ", rows=" + rows +
                '}';
    }

    public int getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }

    public int getTotalPage() {
        return totalPage;
    }

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

    public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }

    public int getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public int getRows() {
        return rows;
    }

    public void setRows(int rows) {
        this.rows = rows;
    }
}
package com.example.domain;

import java.util.List;

/*
    分页对象(分页查询实体类)
 */
public class PageBean<T> {
    private int totalCount;// 总记录数
    private int totalPage;// 总页码
    private List<T> list;// 每页数据 list集合
    private int currentPage;// 当前页码
    private int rows;// 每页显示的条数



    @Override
    public String toString() {
        return "PageBean{" +
                "totalCount=" + totalCount +
                ", totalPage=" + totalPage +
                ", list=" + list +
                ", currentPage=" + currentPage +
                ", rows=" + rows +
                '}';
    }

    public int getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }

    public int getTotalPage() {
        return totalPage;
    }

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

    public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }

    public int getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public int getRows() {
        return rows;
    }

    public void setRows(int rows) {
        this.rows = rows;
    }
}

 

 

后台代码实现

 UserDao接口:

/**
     * 查询总记录数
     * @return
     */
    int findTotalCount();

    /**
     * 分页查询每页记录
     * @param start
     * @param rows
     * @return
     */
    List<User1> findByPage(int start, int rows);

UserDaoImpl实体类:

@Override
    public int findTotalCount() {
        //1.定义sql
        String sql = "select count(*) from user1";

        return template.queryForObject(sql, Integer.class);
    }

    @Override
    public List<User1> findByPage(int start, int rows) {
        //1.定义sql语句
        String sql = "select * from user1 limit ? , ? ";

        return template.query(sql, new BeanPropertyRowMapper<User1>(User1.class),start,rows);
    }

UserService接口:

/**
     * 批量删除用户
     * @param ids
     */
    void delSelectedUser(String[] ids);

    /**
     * 分页查询
     * @param currentPage
     * @param rows
     * @return
     */
    PageBean<User1> findUserByPage(String currentPage, String rows);

UserServiceImpl实体类:

@Override
    public PageBean<User1> findUserByPage(String _currentPage, String _rows) {

        int currentPage = Integer.parseInt(_currentPage);
        int rows = Integer.parseInt(_rows);

        if (currentPage <= 0){
            currentPage = 1;
        }else if (currentPage >= 8){
            currentPage = 7;
        }

        //1.创建空的PageBean对象
        PageBean<User1> pd = new PageBean<User1>();

        //2.设置参数
        pd.setCurrentPage(currentPage);
        pd.setRows(rows);

        //3.调用dao查询totalCount总记录数
        int totalCount = dao.findTotalCount();
        pd.setTotalCount(totalCount);

        //4.调用dao查询List集合
        //计算开始的记录索引
        int start = (currentPage -1) * rows;
        List<User1> list =  dao.findByPage(start,rows);
        pd.setList(list);

        //5.计算总页码
        int totalPage = (totalCount % rows) == 0 ? totalCount/rows : (totalCount/rows) + 1;// 三元运算符

        pd.setTotalPage(totalPage);

        return pd;
    }

FindUserByPageServlet类:

package com.example.web.servlet;

import com.example.domain.PageBean;
import com.example.domain.User1;
import com.example.service.UserService;
import com.example.service.impl.UserServiceImpl;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "FindUserByPageServlet", value = "/findUserByPageServlet")
public class FindUserByPageServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.获取参数
        String currentPage = request.getParameter("currentPage");// 获取当前页面参数
        String rows = request.getParameter("rows");// 获取每页条数

        if (currentPage == null || "".equals(currentPage) ){
            currentPage = "1";
        }
        if (rows == null || "".equals(rows)){
            rows = "5";

        }



        //2.调用service查询
        UserService service = new UserServiceImpl();
        PageBean<User1> pd = service.findUserByPage(currentPage,rows);

        System.out.println(pd);

        //3.将PageBean存入request存储
        request.setAttribute("pd", pd);
        //4.转发到list.jsp页面
        request.getRequestDispatcher("/list.jsp").forward(request, response);
    }
}

前台代码

list.jsp

<div>
        <nav aria-label="Page navigation">
            <ul class="pagination">
                <c:if test="${pd.currentPage == 1}">
                    <li class="disabled">

                </c:if>
                <c:if test="${pd.currentPage != 1}">
                    <li>
                </c:if>


                    <a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${pd.currentPage-1}&rows=5" aria-label="Previous">
                        <span aria-hidden="true">«</span>
                    </a>
                </li>
                <c:forEach begin="1" end="${pd.totalPage}" var="i">

                    <!-- 分页选中 -->
                    <c:if test="${pd.currentPage == i}">
                        <li class="active"><a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${i}&rows=5">${i}</a></li>
                    </c:if>

                    <c:if test="${pd.currentPage != i}">
                        <li><a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${i}&rows=5">${i}</a></li>
                    </c:if>


                </c:forEach>

                <li>
                    <a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${pd.currentPage+1}&rows=5" aria-label="Next">
                        <span aria-hidden="true">»</span>
                    </a>
                </li>
                <span style="font-size: 25px;margin-left: 5px">
                    共${pd.totalCount}条记录,共${pd.totalPage}页
                </span>
            </ul>
        </nav>
    </div>

index.jsp

<div align="center">

    <a
            href="${pageContext.request.contextPath}/findUserByPageServlet" style="text-decoration:none;font-size:33px">查询所有用户信息
    </a>

</div>

 

标签:功能,rows,分页,int,list,查询,totalCount,currentPage,public
From: https://www.cnblogs.com/xuche/p/17101143.html

相关文章

  • Springboot整合AOP和注解,实现丰富的切面功能
    简介我们在文章《SpringAOP与AspectJ的对比及应用》介绍了AOP的使用,这篇文章讲解一下AOP与注解的整合,通过注解来使用AOP,会非常方便。为了简便,我们还是来实现一个计时的功......
  • 12.5活用记忆功能以达到更接近人类的判断
         在该程序中,猜拳结果被保存在了计算机内部的内存中。而对手的出拳信息也通过2维数组”记录了下来。例如player[0][0]这个数组元素记录的就是对手出石头后再......
  • Grafana 系列文章(十一):Loki 中的标签如何使日志查询更快更方便
    ......
  • 删除选择功能
    删除选中功能分析获取选中条目id的代码实现list.jsp:<formid="form"action="${pageContext.request.contextPath}/delSelectedServlet"method="post"></form>使......
  • 12.5活用记忆功能以达到更接近人类的判断
    人类的日常判断通常是根据直觉和经验做出的。直觉并不仅仅是简单的任意思考,通常还带有一些个人的思维习惯。在前面的介绍中我们已经提到,通过借助随机数,思考习惯等也是可以......
  • 注册功能-功能分析、表单校验1
    功能分析register.html1、使用js完成表单校验2、使用ajax完成表单提交3、注册完成,跳转成功页面registUserServlet1、获取数据2、封装user对象3、调用service完成注......
  • JavaScript 的async、await功能
    asyncfunctionasyncfunction说明和C#中的使用类似。不过Task在Javascript中使用的是Promise对象。asyncfunction的返回值asyncfunctiontestAsyncFunction(){......
  • drf认证,权限,频率,过滤,分页
    内容回顾两个视图基类APIViewGenericAPIView:跟数据库打交道,而且需要序列化反序列化,可以使用它5个视图扩展类+GenericAPIView=视图类ListModelMixinCreateModelMixin......
  • 认证组件 权限组件 频率组件 过滤排序 分页
    目录回顾认证组件认证组件的使用步骤注意:权限组件权限的使用频率组件使用步骤过滤排序继承APIView写内置过滤类的使用,继承GenericAPIView使用第三方django-filter实现过滤......
  • drf 三大认证 排序 以及分页
    今日内容1认证组件#以后,有的接口需要登录后才能访问,有的接口,不登录就能访问 -登录认证的限制#写一个登录接口,返回token,以后只要带着token过来,就是登录了,......