给大家分享一个简单实用的分页处理
一、需要pageHelper的包
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.0.0</version>
</dependency>
注意版本不能小于4.0.0
二、配置SqlMapConfig.xml
<!-- 配置分页插件 -->
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
<!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库 -->
<property name="dialect" value="mysql"/>
</plugin>
</plugins>
三、serviceImpl
public PageResult<Notice> selectAll(int page,int pageSize) {
// TODO Auto-generated method stub
// TODO Auto-generated method stub
PageHelper.startPage(page, pageSize);
List<Notice> list=noticeMapper.selectAll();
PageResult<Notice> pageResult=new PageResult<Notice>();
pageResult.setRows(list);
//计算总条数
PageInfo<Notice> pageInfo=new PageInfo<Notice>(list);
Long total=pageInfo.getTotal();
//计算总页数
Long countPage;
if(total%pageSize==0){
countPage=total/pageSize;
}else{
countPage=total/pageSize+1;
}
pageResult.setCountPage(countPage);
return pageResult;
}
这个返回的结果类自己创建一下就行了,主要是
private Long countPage;
//任意类型
private List<?> rows;
public Long getCountPage() {
return countPage;
}
四、controller
把数据传到页面
@GetMapping("/toNotices")
public String toNotices(@RequestParam(defaultValue="1") int page,Model model){
PageResult<Notice> pageResult=noticeService.selectAll(page, 10);
model.addAttribute("notices", pageResult.getRows());
model.addAttribute("countPage", pageResult.getCountPage());
model.addAttribute("page", page);
return "view/notices";
}
五、jsp
<div id="barDivId">
<input type="hidden" value="${page }" id="page">
总页数:${countPage} | 当前页:${page}
|
<a href="${path }/notice/toNotices?page=1">首页</a>
|
<c:if test="${page==1}">上一页</c:if>
<c:if test="${page>1}"><a href="${path }/notice/toNotices?page=${page-1}">上一页</a></c:if>
|
<c:if test="${page==countPage}">下一页</c:if>
<c:if test="${page<countPage}"><a href="${path }/notice/toNotices?page=${page+1}">下一页</a></c:if>
|
<a href="${staticPath }/notice/toNotices?page=${countPage}">末页</a>
</div>
好了就这些,欢迎大神指正批评