您的位置:首页 > 其它

Mybatis分页插件PageHelper使用

2018-03-24 00:46 701 查看
本文主要如何使用Mybatis分页插件PageHelper更加有效率的开发出一个具有分页的表单数据,免去人工自己写分页条件,并且在PageHelper中有很多分页之后的属性,比如当前页码,总页码,总记录数等等。
1.使用maven自动化构建工具,在pom.xml中导入PageHelper的坐标: <!--分页Pagehelper插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.0</version>
</dependency>
2.注意这一步很重要,可能已经写好mapper的sql语句,controller,service都写好了,准备测试,但是如果这一步没有配置,PageHelper是不会起作用的,这一步就是在mybatis的配置文件中,配置使用PageHelper插件:<!-- 引入分页查询的插件 -->
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!--分页合理化,没有前一页的时候,赋为1 -->
<property name="reasonable" value="true"></property>
</plugin>
</plugins>3.测试pagehelper组件,编写controller类: @RequestMapping("/getStudents")
@ResponseBody
public Msg getAllStudents(@RequestParam(value="pn",defaultValue="1")int pn){

//引入PageHelper分页插件
//在查询之前只需调用,传入页码pageNum,以及每页的大小pageSize(显示条目)
PageHelper.startPage(pn, 10);
List<Student> students = studentService.selectAll();
//使用PageInfo包装查询后的结果,只需要pageInfo交给页面就行
//封装了详细的分页信息,包括我们查询出来的数据,传入连续显示的页数
PageInfo page =new PageInfo(students,5);
System.out.pri
a6cf
ntln("当前页码1111:"+page.getPageNum());
System.out.println("总页码11111:"+page.getPages());
//运用链示写法,将获取的信息放在Msg的extend中
return Msg.success().add("studentInfo", page);

}4.利用MockMvc在测试类中,模拟请求MVC模式,package com.webapp.test;

import java.util.List;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

import com.github.pagehelper.PageInfo;
import com.webapp.bean.Student;

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(locations={"classpath:applicationContext.xml","file:src/main/webapp/WEB-INF/dispatcherServlet-servlet.xml"})
public class TestMvc {

//传入springMVC的ioc
@Autowired
WebApplicationContext context;
//虚拟MVC请求,获取到处理结果
MockMvc mockMvc;

@Before
public void initMokcMvc(){
//模拟请求拿到返回值
mockMvc=MockMvcBuilders.webAppContextSetup(context).build();
}

@Test
public void testPage() throws Exception{
//模拟请求拿到返回值
MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/main/getStudents").param("pn", "2")).andReturn();

//请求成功以后,请求域中会有pageInfo,我们可以取出pageInfo进行验证
MockHttpServletRequest request=result.getRequest();
PageInfo pageInfo = (PageInfo) request.getAttribute("studentInfo");
System.out.println("当前页码:"+pageInfo.getPageNum());
System.out.println("总页码:"+pageInfo.getPages());
System.out.println("总记录数:"+pageInfo.getTotal());
System.out.println("在页面需要连续显示的页码:");
int[] nums=pageInfo.getNavigatepageNums();
for (int i :nums) {
System.out.println(" "+i);
}

//获取员工数据
List<Student> list = pageInfo.getList();
for (Student student : list) {
System.out.println("ID"+student.getStuId()+"==>name:"+student.getStuName());
}
}

}
5.测试结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: