victory的博客

长安一片月,万户捣衣声

0%

MyBatis | 分页插件PageHelper及PageHelper模拟分页

分页插件PageHelper及PageHelper模拟分页

1.导入相关包
1)pagehelper-x.x.x.jar
2)jsqlparser-0.9.5.jar
2)在MyBatis全局配置文件mybatis-config.xml中配置分页插件



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

模拟分页

PageUtil.java

package com.atguigu.test;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;

import com.atguigu.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() + "/";
        String path = "/SSM/";
        
        StringBuilder builder = new StringBuilder();
        
        //拼接首页
        builder.append("<a href='"+path+"emps/1'>首页</a>");
        builder.append("&nbsp;");
        
        //拼接上一页
        if(pageInfo.isHasPreviousPage()){
            builder.append("<a href='"+path+"emps/"+pageInfo.getPrePage()+"'>上一页 </a>");
            builder.append("&nbsp;");
        }else{
            builder.append("上一页");
            builder.append("&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;");
            }else{
                builder.append("<a href='"+path+"emps/"+i+"'>"+i+"</a>");
                builder.append("&nbsp;");
            }
        }
        
        //拼接下一页
        if(pageInfo.isHasNextPage()){
            builder.append("<a href='"+path+"emps/"+pageInfo.getNextPage()+"'>下一页</a>");
            builder.append("&nbsp;");
        }else{
            builder.append("下一页");
            builder.append("&nbsp;");
        }
        
        //拼接尾页
        builder.append("<a href='"+path+"emps/"+pageInfo.getPages()+"'>尾页</a>");
        builder.append("&nbsp;");
        
        return builder.toString();
    }
}

TestPage.java

package com.atguigu.test;

import java.io.InputStream;
import java.util.Arrays;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import com.atguigu.bean.Emp;
import com.atguigu.mapper.EmpMapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

public class TestPage {
    @Test
    public void testPage() throws Exception{
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
        PageHelper.startPage(2, 2);
        List<Emp> list = mapper.getAllEmp();
        
        PageInfo<Emp> pageInfo = new PageInfo<>(list, 5);
//        System.out.println(pageInfo);
//        System.out.println(Arrays.toString(pageInfo.getNavigatepageNums()));
        
        System.out.println(PageUtil.getPageInfo(pageInfo, null));
        
        
        for (Emp emp : list) {
            System.out.println(emp);
        }
    }
    
    public SqlSessionFactory getSqlSessionFactory() throws Exception{
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
        return sqlSessionFactory;
    }
}

返回结果
字符串:

<a href='/SSM/emps/1'>首页</a>&nbsp;<a href='/SSM/emps/1'>上一页 </a>&nbsp;<a href='/SSM/emps/1'>1</a>&nbsp;<a style='color:red;' href='/SSM/emps/2'>2</a>&nbsp;<a href='/SSM/emps/3'>3</a>&nbsp;<a href='/SSM/emps/4'>4</a>&nbsp;<a href='/SSM/emps/5'>5</a>&nbsp;<a href='/SSM/emps/3'>下一页</a>&nbsp;<a href='/SSM/emps/6'>尾页</a>&nbsp;

浏览器显示: