Springboot1.5.1-release + Maven + PageHelper集成实战

1. Thymeleaf 、Velocity、Freemarker三个模板引擎比较

Thymeleaf 
     springboot里面自带的。他类似Vue和Angluar的指令,并不是真正的静态模板引擎。所以对有前端团队的,不建议使用。

Velocity
     静态模板引擎。类似的jsp语法,能多级编译,但文件名必须为vm。配置麻烦。层次级别不太好看。适合从事过jsp人员的使用。

Freemarker
     静态模板引擎。类似标签语法,强力建议使用。不支持多级编译(这是硬伤,同时也是有效的保护了代码。)

2. Maven集成thymeLeaf

2.1 添加依赖:

<!--pageHelper-->
<dependency>
       <groupId>com.github.pagehelper</groupId>
       <artifactId>pagehelper</artifactId>
       <version>5.1.11</version>
 </dependency> 

2.2

@ApiOperation(value = "新闻动态页面展示")
@RequestMapping(value = "/news-blogroll", method = RequestMethod.GET)
public String news(Model model, @RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "6") Integer pageSize) {
        PageHelper.startPage(page, pageSize);

        PageInfo<SiteNewsMovingModulePo>(newMovingPage, pageSize);
        SiteNewsMovingSearchParameter parameter = new SiteNewsMovingSearchParameter();
        parameter.setPage(page);
        parameter.setPageSize(pageSize);
        PageResult<SiteNewsMovingModuleDomain> newMovingPage = siteNewsMovingModuleService.searchSiteNewsMovingPage(parameter);
        PageInfo<SiteNewsMovingModuleDomain> pageInfo = new PageInfo<SiteNewsMovingModuleDomain>(newMovingPage.getRecords(), pageSize);
        PageHelperUtil.assemblePageInfo(pageInfo, page, pageSize, newMovingPage.getTotal());
        model.addAttribute("pageInfo", pageInfo);
        return "news-blogroll";
    }

2.3. 因PageHelper分页方法失效,自封装其计算PageInfo方法:

public static PageInfo assemblePageInfo(PageInfo pageInfo, Integer page, Integer pageSize, Integer total) {
        pageInfo.setTotal(total);
        pageInfo.setEndRow(total -1);
        pageInfo.setSize(total);
        pageInfo.setPageNum(page);
        if(page == 1) {
            pageInfo.setIsFirstPage(true);
            pageInfo.setPrePage(1);
        }else{
            pageInfo.setIsFirstPage(false);
            pageInfo.setPrePage(page -1);
        }
        pageInfo.setHasPreviousPage(true);
        Integer pages = 0;
        if(pageSize != 0 && total != 0) {
            Double divResult = ArithUtils.div(total.doubleValue(), pageSize.doubleValue());
            if(ArithUtils.remainder(total.doubleValue(), pageSize.doubleValue()) == 0) { //没有余数,结果为整除
                pages = divResult.intValue();
            }else {
                pages = divResult.intValue() + 1;
            }
            if(pages > page) {
                pageInfo.setHasNextPage(true);
            }else {
                pageInfo.setHasNextPage(false);
            }
            
            if(page < pages) {
                pageInfo.setNextPage(page + 1);
            }else {
                pageInfo.setNextPage(page);
            }
            
            pageInfo.setIsLastPage(false);
            if(pages == page) {
                pageInfo.setIsLastPage(true);
            }
        }
        pageInfo.setPages(pages);
        pageInfo.setNavigatePages(pages);
        int[] navigatePageNums = new int[pages];
        for(int i = 0 ;i < pages; i++) {
            navigatePageNums[i] = i + 1;
        }
        pageInfo.setNavigatepageNums(navigatePageNums);
        return pageInfo;
    }

2.4 thymeleaf分页代码

<div id="new-list-page">
      <a th:if="${pageInfo.hasNextPage || pageInfo.pageNum==pageInfo.pages}" th:href="@{/news-blogroll.html(page=${pageInfo.nextPage})}"><div class="next fr"></div></a>
      <div class="last fr">末页</div>
      <ul class="pagingUl">
          <li th:if="${pageInfo.pageNum!=1}" th:each="page : ${#numbers.sequence(pageInfo.pageNum-7>0?pageInfo.pageNum-7:1,pageInfo.pageNum-1)}">
           <a th:href="@{/news-blogroll.html(page=${page})}" th:text="${page}"></a>
          </li>
          <li><a href="#" class="activ-page" th:text="${pageInfo.pageNum}"></a></li>
          <li th:if="${pageInfo.pageNum!=pageInfo.pages}" th:each="page : ${#numbers.sequence(pageInfo.pageNum+1,pageInfo.pageNum+7<pageInfo.pages?pageInfo.pageNum+7:pageInfo.pages)}">
            <a th:href="@{/news-blogroll.html(page=${page})}" th:text="${page}"></a>
           </li> 
        </ul>
       <div class="first fr">首页</div>
          <a th:href="@{/news-blogroll.html(page=${pageInfo.prePage})}"><div class="prv fr" th:if="${pageInfo.hasPreviousPage}" ></div></a>
       </div>

2.5 分页效果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值