1.编写Page工具类
package com.lxw.utils;
import java.util.List;
public class Page {
//每页显示的个数
private Integer pageSize;
//当前显示的页数
private Integer pageNumber;
//总页数
private Integer total;
//显示的数据
private List<?> list;
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getPageNumber() {
return pageNumber;
}
public void setPageNumber(Integer pageNumber) {
this.pageNumber = pageNumber;
}
public Integer getTotal() {
return total;
}
public void setTotal(Integer total) {
this.total = total;
}
public List<?> getList() {
return list;
}
public void setList(List<?> list) {
this.list = list;
}
}
2.编写mapper层(dao层)
注意:这里要查询到全部记录
package com.lxw.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.lxw.pojo.Book;
public interface BookMapper {
/**
* 查询共有多少条图书记录
* @return
*/
int selCount();
/**
* 分页查询
* @param beginIndex
* @param pageCount
* @return
*/
List<Book> selPageList(@Param("pageNumber")Integer pageNumber,@Param("pageSize")Integer pageSize);
}
3.BookMapper.xml文件编写
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lxw.mapper.BookMapper">
<!--查询共有多少条记录 -->
<select id="selCount" resultType="int">
SELECT COUNT(1) FROM books
</select>
<!--分页查询全部信息-->
<select id="selPageList" resultType="Book" parameterType="Integer">
select * from books limit #{pageNumber},#{pageSize}
</select>
</mapper>
4.service层编写
package com.lxw.service;
import com.lxw.utils.Page;
public interface BookService {
Page selPageList(Integer pageNumber,Integer pageSize);
}
5.serviceImpl层编写!!!
package com.lxw.serviceImpl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.lxw.mapper.BookMapper;
import com.lxw.pojo.Book;
import com.lxw.service.BookService;
import com.lxw.utils.Page;
@Service
public class BookServiceImpl implements BookService{
@Autowired
private BookMapper bookMapper;
@Override
public Page selPageList(Integer pageNumber, Integer pageSize) {
Page page=new Page();
//总条数
Integer count=bookMapper.selCount();
//每页条数
page.setPageSize(pageSize);
//总页数
page.setPageNumber(pageNumber);
//显示内容
List<Book> list=bookMapper.selPageList(pageSize*(pageNumber-1), pageSize);
//查询到的信息放到集合中
page.setList(list);
//总页数
page.setTotal(count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
return page;
}
}
6.Controller层编写
package com.lxw.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import com.lxw.service.BookService;
@Controller
@RequestMapping("/book")
public class BookController {
@Autowired
private BookService bookService;
@RequestMapping("/show")
public ModelAndView showPlus(@RequestParam(value = "pageNumber",defaultValue = "1")Integer pageNumber,@RequestParam(value = "pageSize",defaultValue = "3")Integer pageSize) {
ModelAndView modelAndView=new ModelAndView("index");
modelAndView.addObject("page", bookService.selPageList(pageNumber, pageSize));
return modelAndView;
}
}
6.index.jsp页面显示
这里主要是要显示点击效果,然后判断上一页和下一页来优化效果
<%@page import="org.springframework.ui.Model"%>
<%@page import="com.lxw.pojo.Book"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%
/* Book book=(Book)request.getAttribute("list");
if (book == null) {
request.getRequestDispatcher("/book/sel").forward(request, response);
return;
} */
%>
<base href="<%=basePath%>">
<title></title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body style="text-align: center;">
<form action="" mathod="post">
<select name="bookType">
<option value="0">书名</option>
<option value="1">作者</option>
<option value="2">出版社</option>
</select>
<input/>
<input type="button" value="提交"/>
<br/>
<a href="add.jsp">增加新书</a>
<table border="" cellspacing="0px" cellpadding="5px" align="center" width="600px">
<tr style="background-color: #1A66B3;"><th>书名</th><th>作者</th><th>出版社</th><th>页数</th><th>价格</th></tr>
<c:forEach items="${page.list}" var="l">
<tr>
<td>${l.bookName}</td>
<td>${l.bookAuthor}</td>
<td>${l.bookPublish}</td>
<td>${l.bookPage}</td>
<td>${l.bookPrice}</td>
</tr>
</c:forEach>
</table>
<a href="/book/show?pageNumber=1&pageSize=3" aria-label="Previous">首页</a>
<a href="/book/show?pageNumber=${page.pageNumber-1}&pageSize=${page.pageSize}" <c:if test="${page.pageNumber<=1}">onclick="javascript:return false;"</c:if>>上一页</a>
<a href="/book/show?pageNumber=${page.pageNumber+1}&pageSize=${page.pageSize}" <c:if test="${page.pageNumber>=page.total}">onclick="javascript:return false;"</c:if>>下一页</a>
<a href="/book/show?pageNumber=${page.total}&pageSize=${page.pageSize}" aria-label="Next">尾页</a>
<span>第${page.pageNumber}页/共${page.total}页</span>
</form>
<p style="color: red;">${result}</p>
</body>
</html>
7.展示效果