1..分页操作使用MyBatis的PageHelper
1>导入pageHelper的坐标
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.2</version> </dependency>
2>在applicationContext.xml的 sqlSessionFactory 中配置Pagehelper
<!--配置生产SqlSession对象的工厂 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!--扫描pojo包,给包下所有pojo对象起别名 --> <property name="typeAliasesPackage" value="com.hdh.domain" /> <!-- 传入PageHelper的插件 --> <property name="plugins"> <array> <!-- 传入插件的对象 --> <bean class="com.github.pagehelper.PageInterceptor"> <property name="properties"> <props> <prop key="helperDialect">mysql</prop> <prop key="reasonable">true</prop> </props> </property> </bean> </array> </property> </bean>
3>在业务层调用分页方法传入页数和每页的记录数
public List<Orders> findAllOrders(int page,int size) { PageHelper.startPage(page, size); List<Orders> orders=orderDao.findAllOrders(); return orders; }
4.在数据返回页面之前将数据封装到PageInfo 中
PageInfo pageInfo = new PageInfo(ordersList); mode.addObject("pageInfo", pageInfo);
并且在页面中遍历时放入PageInfo的数据拿出来时应.list
<c:forEach items="${pageInfo.list}" var="orders">
5.常用的pageHelper属性
//当前页 private int pageNum; //每页的数量 private int pageSize; //当前页的数量 private int 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; //所有导航页号 private int[] navigatepageNums; //导航条上的第一页 private int navigateFirstPage; //导航条上的最后一页 private int navigateLastPage;