一、分页原理:
二、简单分页的实现方法:
页号固定,点击某个页号超链接后到后端查询对应的数据,返回给前端。
前端设置页号:
<a href="${pageContext.request.contextPath}/studentservice/main?pageNum=1&pageSize=5">1</a>
<a href="${pageContext.request.contextPath}/studentservice/main?pageNum=2&pageSize=5">2</a>
<a href="${pageContext.request.contextPath}/studentservice/main?pageNum=3&pageSize=5">3</a>
后端业务逻辑层接收前端的请求,并调用数据访问层进行查询:
protected void doShow(HttpServletRequest req, HttpServletResponse resp){
try {
int pageNum = Integer.parseInt(req.getParameter("pageNum"));//页号
int pageSize = Integer.parseInt(req.getParameter("pageSize"));//每页条数
List<Student> list = StudentsMapper.selectByPage(pageNum,pageSize);//调用数据访问层方法进行查询
req.setAttribute("list", list);
System.out.println(list);
req.getRequestDispatcher("/mainPage.jsp").forward(req, resp);
} catch (Exception e) {
e.printStackTrace();
}
}
数据访问层访问数据库,调用limit:
public static List<Student> selectByPage(int pageNum,int pageSize){
Connection con = null;
PreparedStatement pre = null;
ResultSet res = null;
List<Student> list = new ArrayList();
try {
con = DBConnection.getConnection();
pre = con.prepareStatement("select stuid,stuname,stuclass from student limit ?,?");
System.out.println((pageNum-1)*pageSize);
System.out.println(pageSize);
pre.setInt(1,(pageNum-1)*pageSize);//根据页号和每页数量计算从第几行开始
pre.setInt(2,pageSize);
res = pre.executeQuery();
while(res.next()) {
String stuId = res.getString("stuid");
String stuName = res.getString("stuname");
String stuClass = res.getString("stuclass");
Student student = new Student(stuId,stuName,stuClass);
list.add(student);
}
}catch(Exception e) {
e.getMessage();
}finally {
DBConnection.close(con, pre, res);
}
return list;
}
三、PageHelper插件使用方法:
- 第一步:pom.xml引入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.3.1</version>
</dependency>
- 第二步:修改核心配置文件
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
- 第三步:业务逻辑开启分页
@Test
public void testPageHelper() throws Exception{
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
SqlSession sqlSession = sqlSessionFactory.openSession();
CarMapper mapper = sqlSession.getMapper(CarMapper.class);
// 开启分页
PageHelper.startPage(2, 2);
// 执行查询语句
List<Car> cars = mapper.selectAll();
// 获取分页信息对象
PageInfo<Car> pageInfo = new PageInfo<>(cars, 5);
System.out.println(pageInfo);
}