zoukankan      html  css  js  c++  java
  • 扩展-PageHelper分页插件

    1、PageHelper 分页插件简介
      1) PageHelper是MyBatis中非常方便的第三方分页插件
      2) 官方文档:
        https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md
      3) 我们可以对照官方文档的说明,快速的使用插件

    2、PageHelper的使用步骤
      1) 导入相关包pagehelper-x.x.x.jar 和 jsqlparser-0.9.5.jar
      2) 在MyBatis全局配置文件中配置分页插件(注意插入顺序位置)

    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>

      3) 使用PageHelper提供的方法进行分页
      4) 可以使用更强大的PageInfo封装返回结果

    3、Page对象的使用

      1) 在查询之前通过 PageHelper.startPage(页码,条数) 设置分页信息,该方法返回Page对象

    @Test
        public void testPageHelper()  throws Exception{
            SqlSessionFactory ssf = getSqlSessionFactory();
            SqlSession session = ssf.openSession();
            try {
                EmployeeMapper mapper = 
                          session.getMapper(EmployeeMapper.class);
                //设置分页信息
                Page<Object> page = PageHelper.startPage(9, 1);
                List<Employee> emps = mapper.getAllEmps();
                for (Employee employee : emps) {
                    System.out.println(employee);
                }
                System.out.println("=============获取分页相关的信息=================");
                System.out.println("当前页: " + page.getPageNum());
                System.out.println("总页码: " + page.getPages());
                System.out.println("总条数: " + page.getTotal());
                System.out.println("每页显示的条数: " + page.getPageSize());
            } finally {
                session.close();
            }
        }

    4、PageInfo对象的使用
      1) 在查询完数据后,使用PageInfo对象封装查询结果,可以获取更详细的分页信息以及可以完成分页逻辑

    @Test
        public void testPageHelper1()  throws Exception{
            SqlSessionFactory ssf = getSqlSessionFactory();
            SqlSession session = ssf.openSession();
            try {
                EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
                //设置分页信息
                Page<Object> page = PageHelper.startPage(9, 1);
                List<Employee> emps = mapper.getAllEmps();
                // 
                PageInfo<Employee> info  = new PageInfo<>(emps,5);
                for (Employee employee : emps) {
                    System.out.println(employee);
                }
                System.out.println("=============获取详细分页相关的信息=================");
                System.out.println("当前页: " + info.getPageNum());
                System.out.println("总页码: " + info.getPages());
                System.out.println("总条数: " + info.getTotal());
                System.out.println("每页显示的条数: " + info.getPageSize());
                System.out.println("是否是第一页: " + info.isIsFirstPage());
                System.out.println("是否是最后一页: " + info.isIsLastPage());
                System.out.println("是否有上一页: " + info.isHasPreviousPage());
                System.out.println("是否有下一页: " + info.isHasNextPage());
                
                System.out.println("============分页逻辑===============");
                int [] nums = info.getNavigatepageNums();
                for (int i : nums) {
                    System.out.print(i +" " );
                }
            } finally {
                session.close();
            }
        }

    分页实现: 首页 上一页 1 2 3 4 5 下一页 末页

    package com.atguigu.ssm.util;
    
    import javax.servlet.http.HttpServletRequest;
    
    import com.atguigu.ssm.bean.Emp;
    import com.github.pagehelper.PageInfo;
    
    /**
     * 首页 上一页 1 2 3 4 5 下一页 末页
     *
     */
    public class PageUtil {
    
        public static String getPageInfo(PageInfo<Emp> pageInfo, HttpServletRequest request) {
            
            String path = request.getContextPath() + "/";
            StringBuilder builder = new StringBuilder();
            
            //拼接首页
            builder.append("<a href='"+path+"emps/1'>首页</a>");
            builder.append("&nbsp;&nbsp;");
            
            //拼接上一页
            if(pageInfo.isHasPreviousPage()) {
                builder.append("<a href='"+path+"emps/"+pageInfo.getPrePage()+"'>上一页</a>");
                builder.append("&nbsp;&nbsp;");
            }else {
                builder.append("上一页");
                builder.append("&nbsp;&nbsp;");
            }
            
            //拼接页码
            int[] nums = pageInfo.getNavigatepageNums();
            for (int i : nums) {
                if(i == pageInfo.getPageNum()) {
                    builder.append("<a style='color:red;' href='"+path+"emps/"+i+"'>"+i+"</a>");
                    builder.append("&nbsp;&nbsp;");
                }else {
                    builder.append("<a href='"+path+"emps/"+i+"'>"+i+"</a>");
                    builder.append("&nbsp;&nbsp;");
                }
            }
            
            //拼接下一页
            if(pageInfo.isHasNextPage()) {
                builder.append("<a href='"+path+"emps/"+pageInfo.getNextPage()+"'>下一页</a>");
                builder.append("&nbsp;&nbsp;");
            }else {
                builder.append("下一页");
                builder.append("&nbsp;&nbsp;");
            }
            
            //拼接尾页
            builder.append("<a href='"+path+"emps/"+pageInfo.getPages()+"'>尾页</a>");
            builder.append("&nbsp;&nbsp;");
            
            return builder.toString();
            
        }
        
    }
  • 相关阅读:
    Leetcode 16.25 LRU缓存 哈希表与双向链表的组合
    Leetcode437 路径总和 III 双递归与前缀和
    leetcode 0404 二叉树检查平衡性 DFS
    Leetcode 1219 黄金矿工 暴力回溯
    Leetcode1218 最长定差子序列 哈希表优化DP
    Leetcode 91 解码方法
    Leetcode 129 求根到叶子节点数字之和 DFS优化
    Leetcode 125 验证回文串 双指针
    Docker安装Mysql记录
    vmware虚拟机---Liunx配置静态IP
  • 原文地址:https://www.cnblogs.com/lemonzhang/p/12970361.html
Copyright © 2011-2022 走看看