pagehelper使用教程
1.导包
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.2</version> </dependency>
2.在sqlsessionfactory下添加
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="configLocation" value="classpath:mybatis-config.xml"/> <!--//配置分页--> <!--为啥写了半天不对劲,原因是artifacts中没有导入依赖包--> <property name="plugins"> <array> <bean class="com.github.pagehelper.PageInterceptor"> <property name="properties" value="mysql"> </property> </bean> </array> </property> </bean>
3.在Service层新建返回一个PageInfo对象的接口
PageInfo queryAllBookPage(int page, int pageSize);
4.在Service层下的接口实现类添加,注意调用startPage后紧跟查询。最后将查询内容封装成一个PageInfo对象并且返回
public PageInfo queryAllBookPage(int page, int pageSize) { PageHelper.startPage(page,pageSize); List<Books> books = bookMapper.queryAllBook(); PageInfo pageInfo = new PageInfo(books); return pageInfo; }
5.在Controller层添加请求接口,应当至少包括三个参数,page,pageSize,model
public String list(Integer page,Integer pageSize,Model model){ //返回一个书籍展示页面 //List<Books> books = bookService.queryAllBook(); //PageInfo pageInfo = bookService.queryAllBookPage(page,pageSize); //model.addAttribute("list",books); model.addAttribute("pageInfo",bookService.queryAllBookPage(page,pageSize)); return "allbook"; };
6.在jsp页面中使用 返回对象名称.list访问数据
<c:forEach var="book" items="${pageInfo.list}"> <tr> <td>${book.bookID}</td> <td>${book.bookName}</td> <td>${book.bookCounts}</td> <td>${book.detail}</td> <td> <a class="btn" href="${pageContext.request.contextPath}/book/toUpdata?id=${book.bookID}">修改</a> <a class="btn" href="${pageContext.request.contextPath}/book/delBook/${book.bookID}">删除</a> </td> </tr> </c:forEach>
7.jsp页面的分页按钮如下
<a href="${pageContext.request.contextPath}/book/allBook?page=${pageInfo.pageNum-1}&pageSize=${pageInfo.pageSize}" aria-label="Previous"> <span aria-hidden="true">«</span> </a>
8.pageInfo还包含了以下可使用属性
public class PageInfo<T> implements Serializable { private static final long serialVersionUID = 1L; //当前页 private int pageNum; //每页的数量 private int pageSize; //当前页的数量 private int size; //由于startRow 和endRow 不常用,这里说个具体的用法 //可以在页面中"显示startRow 到endRow 共size 条数据" //当前页面第一个元素在数据库中的行号 private int startRow; //当前页面最后一个元素在数据库中的行号 private int endRow; //总记录数 private long total; //总页数 private int pages; //结果集 private List<T> list; //前一页 private int prePage; //下一页 private int nextPage; //是否为第一页 private boolean isFirstPage = false; //是否为最后一页 private boolean isLastPage = false; //是否有前一页 private boolean hasPreviousPage = false; //是否有下一页 private boolean hasNextPage = false; //导航页码数 private int navigatePages; 传智播客——专注于Java、.Net 和Php、网页平面设计工程师的培训 北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090 //所有导航页号 private int[] navigatepageNums; //导航条上的第一页 private int navigateFirstPage; //导航条上的最后一页 private int navigateLastPage; }

浙公网安备 33010602011771号