本次stringboot使用的分页操作是调用pagehelper来帮助分页。
本次的数据库是oracle数据库。
1.加入pagehelper的依赖
<!-- 分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
2.在配置文件中加入对应的信息
helper-dialect是指定数据库的意思
reasonable:true的意思是超出自己指定的页数也能正常的显示
support-methods-arguments和params好像是配置信息
pagehelper:
helper-dialect: oracle
reasonable: true
support-methods-arguments: true
params: count=countSql
3.查找分页所需要的数据和编写对应的DAO方法
mapper文件中:
<mapper namespace="com.exam.demo.dao.GoodsDao">
<select id="selectAllGoods" resultType="com.exam.demo.model.Goods">
select * from o_goods
</select>
</mapper>
dao层中:
public List<Goods> selectAllGoods();
4.service层中编写方法
service接口:
PageInfo是储存分页信息的
后面的两个参数,第一个参数是是一共多少页(默认值为1,代表至少有一页,不用我们算),第二个参数是每页多少条(自己设置)
public interface GoodsService {
// service层调用dao中查所有的数据,还要设定分页
// 一共两个参数,第一个是一共多少页(默认值为1,代表至少有一页,不用我们算),每页多少条(自己设置)
PageInfo<Goods> findAllGoods(int pageNum,int pagesize);
}
serviceimpl实现方法中:
PageHelper.startPage方法开始分页,然后把dao层获取到的信息传给PageInfo。
public PageInfo<Goods> findAllGoods(int pageNum, int pagesize) {
//开始分页,第一次是第一页
PageHelper.startPage(pageNum,pagesize); //默认第一页开始
//先把所有的商品信息取出来
List<Goods> goods=dao.selectAllGoods();
//把dao取到的所有商品,给pageinfo
PageInfo<Goods> re=new PageInfo<>(goods);
return re;
}
5.controller中实现方法
ModelAndView和model性质相同,只是传输类型是map,参数中也能赋初始值,方便没取到值可以用初始值
括号内的注解@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)
value:参数名
required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值
下面的ModelAndView参数1是要去的页面,参数2是传输给下个页面的值,参数三是先取到值给参数2
public ArrayList<Goods> goods=new ArrayList<>(); //一页的商品
@RequestMapping(value = "/list0")
//ModelAndView 和model性质相同,只是传输类型是map参数中也能赋初始值,方便没取到值可以用初始值
public ModelAndView goodsList(ModelMap map, @RequestParam(name = "pageNum",required = false,defaultValue = "1")int pageNum,
@RequestParam(name = "pagesize",required = false,defaultValue = "8")int pagesize, Model m){
//ModelAndView参数1是要去的页面,参数2是传输给下个页面的值,参数三是先取到值给参数2
ModelAndView modelAndView=new ModelAndView("list0","goodsList",goodsService.findAllGoods(pageNum,pagesize));
return modelAndView;
}
这样list0页面就接受到了分页的请求,有数据进行分页拉~
6.list0页面的操作
就是通过themeleaf循环来输出拉~
<div id="zhong">
<div id="z1">
<div class="right"><a href="跳转界面/京东商城2.html"><img src="/img/right.png"/></a></div>
<div class="zz1">
<!--商品展示区-->
<ul th:each="goods:${goodsList.list}">
<!--商品-->
<li id="goods">
<input hidden id>
<img id="imgURL" th:src="${goods.imgURL}"/>
<div id="title" th:text="${goods.title}">
<a href="跳转界面/联想拯救者电脑.html" target="_blank"></a>
</div>
<button id="goShopping" onclick="goShopping(this.value)" th:value="${goods.id}">加入购物车</button>
<div id="eval" th:text="'评论数:'+${goods.evaluate}"></div>
<div id="price" th:text="'惊爆价:'+${goods.price} "></div>
</li>
</ul>
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<nav aria-label="Page navigation" class="text-center">
<ul class="pagination pagination-md" >
<li th:if="!${goodsList.isFirstPage}">
<a th:href="@{'/goods/list0?pageNum=1'}">
首页
</a>
</li>
<li th:class="${goodsList.isFirstPage}?'disabled' : ''">
<a th:href="@{'/goods/list0?pageNum=' + ${goodsList.prePage}}">上一页</a>
</li>
<li th:if="${goodsList.pageNum - 2 >=1}" >
<a th:href="@{'/goods/list0?pageNum=' + ${goodsList.pageNum - 2}}" th:text="${goodsList.pageNum - 2}"></a>
</li>
<li th:if="${goodsList.pageNum - 1 >=1}" >
<a th:href="@{'/goods/list0?pageNum=' + ${goodsList.pageNum - 1}}" th:text="${goodsList.pageNum - 1}"></a>
</li>
<li class="active">
<a th:href="@{'/goods/list0?pageNum=' + ${goodsList.pageNum}}" th:text="${goodsList.pageNum}"></a>
</li>
<li th:if="${goodsList.pageNum + 1 <=goodsList.pages}" >
<a th:href="@{'/goods/list0?pageNum=' + ${goodsList.pageNum + 1}}" th:text="${goodsList.pageNum + 1}"></a>
</li>
<li th:if="${goodsList.pageNum+2 <=goodsList.pages}" >
<a th:href="@{'/goods/list0?pageNum=' + ${goodsList.pageNum+2}}" th:text="${goodsList.pageNum +2}"></a>
</li>
<li th:class="${goodsList.pageNum==goodsList.pages}?'disabled' : ''" >
<a th:href="@{'/goods/list0?pageNum=' + ${goodsList.pageNum + 1}}">
下一页
</a>
</li>
<li th:if="!${goodsList.isLastPage}">
<a th:href="@{'/goods/list0?pageNum=' + ${goodsList.pages}}">
尾页
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>