springboot整合pagehelper实现分页查询


在pom文件中引入依赖

<!-- 分页助手启动器 -->
<dependency>
	<groupId>com.github.pagehelper</groupId>
	<artifactId>pagehelper-spring-boot-starter</artifactId>
	<version>${pageHelper.starter.version}</version>
</dependency>


在application.yml文件中添加pagehelper配置,如果用的是mysql,就把oracle换成mysql

#pagehelper分页插件设置
pagehelper:
  helper-dialect: oracle
  reasonable: true
  support-methods-arguments: true
  params: count=countSql


开始使用pagehelper
@Service @Transactional public class OrderServiceImpl implements OrderService { @Autowired private OrdersMapper ordersMapper; @Override public List<Orders> findAll(int page,int size) throws Exception { PageHelper.startPage(page,size); return ordersMapper.getOrderProduct(); } }
在调用sql的语句前,加上一行代码, PageHelper.startPage(page,size);,俩个参数分别表示的是当前页码和每页的数据条数

PageInfo的引入,PageInfo是PageHelper提供给我们的一个封装了各种分页信息的Bean,所以在Controller层中将上一步中通过分页查询出来的List封装到PageInfo中

@RequestMapping("findAll.do")
    public ModelAndView findAll(@RequestParam(name="page",required = true,defaultValue = "1")int page,
                                @RequestParam(name = "size",required = true,defaultValue = "4")int size) throws Exception {
        List<Orders> ordersList = orderService.findAll(page,size);
        PageInfo pageInfo = new PageInfo(ordersList);
        ModelAndView mv = new ModelAndView();
        mv.addObject("pageInfo",pageInfo);
        mv.setViewName("orders-page-list");
        return mv;
    }

以上代码中将分页查询出来的orderList封装到了PageInfo中,再讲pageInfo添加到model中

PageInfo中的几个分页属性

public class PageInfo<T> implements Serializable {
    private static final long serialVersionUID = 1L;
    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;//表示的是通过分页查询出来的具体结果集,在之前将orderList封装到PageInfo中后,list属性表示的就是orderList,
    private int prePage;
    private int nextPage;
    private boolean isFirstPage;
    private boolean isLastPage;
    private boolean hasPreviousPage;
    private boolean hasNextPage;
    private int navigatePages;
    private int[] navigatepageNums;
    private int navigateFirstPage;
    private int navigateLastPage;


在页面中具体使用分页信息
1 使用pageInfo中的list属性

<c:forEach items="${pageInfo.list}" var="orders">
	<tr>
		<td><input name="ids" type="checkbox"></td>
		<td>${orders.id }</td>
		<td>${orders.ordernum }</td>
		<td>${orders.product.productname }</td>
		<td>${orders.product.productprice }</td>
		<td>${orders.ordertimeStr }</td>
		<td class="text-center">${orders.orderstatusStr }</td>
		<td class="text-center">
		<button type="button" class="btn bg-olive btn-xs">订单</button>
		<button type="button" class="btn bg-olive btn-xs" onclick="location.href='${pageContext.request.contextPath}/orders/findById.do?id=${orders.id}'">详情</button>
		<button type="button" class="btn bg-olive btn-xs">编辑</button>
		</td>
	</tr>
</c:forEach>

上文中已经提到,将orderList封装到PageInfo后,PageInfo中的list属性表示的就是orderList,所以在页面中遍历pageInfo.list
2 使用pageInfo中的其它分页信息

<ul class="pagination">
	<li><a href="/orders/findAll.do?page=1&size=${pageInfo.pageSize}" aria-label="Previous">首页</a></li>
	<li><a href="/orders/findAll.do?page=${pageInfo.pageNum-1}&size=${pageInfo.pageSize}">上一页</a></li>
		<c:forEach begin="1" end="${pageInfo.pages}" var="pageNum">
			<li><a href="/orders/findAll.do?page=${pageNum}&size=${pageInfo.pageSize}">${pageNum}</a></li>
		</c:forEach>
	<li><a href="/orders/findAll.do?page=${pageInfo.pageNum+1}&size=${pageInfo.pageSize}">下一页</a></li>
	<li><a href="/orders/findAll.do?page=${pageInfo.pages}&size=${pageInfo.pageSize}" aria-label="Next">尾页</a></li>
</ul>

在这里需要注意的就是遍历中间页,pageInfo.pages表示的是一共有多少页数据,所以通过c:forEach遍历,开始索引为1,最终索引为pageInfo.pages

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值