SpringBoot的分页操作

SpringBoot的分页操作

本次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>

你可能感兴趣的:(框架)