本文参考了下面的文章,很棒,对我很有用。感谢这位作者!
以下是根据我实际情况修改的代码,特地记录以防以后也要用到分页。
前端jsp:(分页条码用的是bootstrap4)
<div class="page">
<ul class="pagination">
<li class="page-item"><a class="page-link" href="article?pageIndex=1">首页</a></li>
<li class="page-item"><a class="page-link" href="article?pageIndex=${pageUtil.pageIndex>1?pageUtil.pageIndex-1:1}">上一页</a></li>
<c:forEach begin="1" end="${pageUtil.pageCount}" var="i">
<c:choose>
<c:when test="${i==pageUtil.pageIndex}">
<li class="page-item "><a class="page-link" href="article?pageIndex=${i}" style="background: #c90a16;color: white;">${i }</a></li>
</c:when>
<c:otherwise>
<li class="page-item "><a class="page-link" href="article?pageIndex=${i}">${i }</a></li>
</c:otherwise>
</c:choose>
</c:forEach>
<li class="page-item"><a class="page-link" href="article?pageIndex=${pageUtil.pageIndex<pageUtil.pageCount?pageUtil.pageIndex+1:pageUtil.pageCount}">下一页</a></li>
<li class="page-item"><a class="page-link" href="article?pageIndex=${pageUtil.pageCount}">尾页</a></li>
<li class="page-item disabled"><a class="page-link" href="#">共<span >${pageUtil.pageCount }</span>页</a> </li>
</ul>
</div>
controller层:
@RequestMapping(value = "article")
public ModelAndView pageArticle(ModelAndView model, HttpSession session, HttpServletRequest request) {
int pageIndex = 1;
if (request.getParameter("pageIndex") != null)
pageIndex = Integer.parseInt(request.getParameter("pageIndex"));
Integer userid = (Integer) session.getAttribute("userid");
//根据用户id取出数据,10表示pagesize=10,每页10条数据,
List<Article> listArticle = articleService.getArticlePage(userid, pageIndex, 10);
System.out.println(listArticle.get(0).getContent());
//将listArticle封装到pageutil类中
PageUtil<Article> pageUtil = new PageUtil<Article>();
pageUtil.setList(listArticle);
//pagenumber表示共多少条数据
Integer pageNumber = articleService.getArticlePageCount(userid);
//pagecount表示多少页
int pageCount = (int) Math.ceil(pageNumber / 10);
if (pageCount < 1)
pageCount = 1;
pageUtil.setPageCount(pageCount);
pageUtil.setPageNumber(pageNumber);
pageUtil.setPageIndex(pageIndex);
request.setAttribute("pageUtil", pageUtil);
Collections.reverse(listArticle);
Collections.copy(listArticle, listArticle);
model.addObject("listArticle", listArticle);
model.setViewName("article/article");
System.out.println("pageNumber:" + pageNumber);
return model;
}
service层:
public List<Article> getArticlePage(Integer userid, int pageIndex, int pageSize) {
return articleMapper.getArticlePage(userid,(pageIndex-1) * pageSize, pageSize);
}
public int getArticlePageCount(Integer userid) {
return articleMapper.getArticlePageCount(userid);
}
mapper.java:
List<Article> getArticlePage(@Param("userid") Integer userid, @Param("pageIndex") int pageIndex,@Param("pageSize") int pageSize);
int getArticlePageCount(Integer userid);
mapper.xml
<!-- 分页查询该用户的所有帖子信息 getArticlePage-->
<select id="getArticlePage" parameterType="com.mandy.model.Article" resultMap="BaseResultMap">
select fid, title, content, label, time, userid, username, readNum,likes
from article
where userid = #{userid,jdbcType=INTEGER}
limit #{pageIndex,jdbcType=INTEGER},#{pageSize,jdbcType=INTEGER}
</select>
<!-- SELECT COUNT(*) FROM 表名称。getArticlePageCount-->
<select id="getArticlePageCount" parameterType="java.lang.Integer" resultType="Integer">
select count(*)
from article
where userid = #{userid,jdbcType=INTEGER}
</select>
运行结果:(只展示分页部分,内容部分省...)