java中对list分页并显示数据到页面实例代码

有时候需要根据条件查询得出的数据较多,需要分页显示到页面上。这时点击下一页就不方便每次带查询条件在数据库中分页。可以在list中进行分页。

page的model类:

public class Page {

private Integer currentPage;//当前页

private int pageSize;//每页显示记录条数

private int totalPage;//总页数

private List<?> dataList;//每页显示的数据

private int star;//开始数据

public Integer getCurrentPage() {

return currentPage;

}

public void setCurrentPage(Integer currentPage) {

this.currentPage = currentPage;

}

public int getPageSize() {

return pageSize;

}

public void setPageSize(int pageSize) {

this.pageSize = pageSize;

}

public int getTotalPage() {

return totalPage;

}

public void setTotalPage(int totalPage) {

this.totalPage = totalPage;

}

public List<?> getDataList() {

return dataList;

}

public void setDataList(List<?> dataList) {

this.dataList = dataList;

}

public int getStar() {

return star;

}

public void setStar(int star) {

this.star = star;

}

}

控制层:

@RequestMapping("fenye.do")

public String fen(Page page,HttpServletRequest request){

try {

//查询出的list数据

List<Data> showdata=loginService.selectyichall();

//刚开始的页面为第一页

if (page.getCurrentPage() == null){

page.setCurrentPage(1);

} else {

page.setCurrentPage(page.getCurrentPage());

}

//设置每页数据为十条

page.setPageSize(10);

//每页的开始数

page.setStar((page.getCurrentPage() - 1) * page.getPageSize());

//list的大小

int count = showdata.size();

//设置总页数

page.setTotalPage(count % 10 == 0 ? count / 10 : count / 10 + 1);

//对list进行截取

page.setDataList(showdata.subList(page.getStar(),count-page.getStar()>page.getPageSize()?page.getStar()+page.getPageSize():count));

//设置作用域

request.setAttribute("paging", page);

return "add/show.jsp";

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

return "mistake.jsp";

}

}

jsp页面:

<script type="text/javascript" language="javascript">

function goPage(page){

location.href="fenye.do?currentPage=" rel="external nofollow" +page;

}

</script>

<div>

<table width="100%" border="0" align="center" cellspacing="1" >

<c:forEach items="${paging.dataList }" var="upl">

<tr>

<td align="center">${upl.name1 }</td>

<td align="center">${upl.name2 }</td>

<td align="center">${upl.name3 }</td>

</tr>

</c:forEach>

</table>

</div>

<div style="text-align:center; margin-top:10px;color: white;" id="venderfen">

<c:if test="${paging.totalPage > 0}">

当前第 ${paging.currentPage } 页/共 ${paging.totalPage} 页

</c:if>

<c:if test="${paging.totalPage > 1}">

<c:choose>

<c:when test="${paging.currentPage==2 && paging.totalPage==2}">

<a onclick="goPage(1)">首页</a>

<a onclick="goPage(${paging.currentPage-1})">上一页</a>

</c:when>

<c:when test="${paging.currentPage==1}">

<a onclick="goPage(${paging.currentPage+1})">下一页</a>

<a onclick="goPage(${paging.totalPage})">末页</a>

</c:when>

<c:when test="${paging.currentPage==paging.totalPage}">

<a onclick="goPage(1)">首页</a>

<a onclick="goPage(${paging.currentPage-1})">上一页</a>

</c:when>

<c:otherwise>

<a onclick="goPage(1)">首页</a>

<a onclick="goPage(${paging.currentPage-1})">上一页</a>

<a onclick="goPage(${paging.currentPage+1})">下一页</a>

<a onclick="goPage(${paging.totalPage})">末页</a>

</c:otherwise>

</c:choose>

</c:if>

共 ${paging.total} 条

</div>

StringBuilder sb = new StringBuilder();

sb.append("SELECT distinct(m.time) ");

sb.append(" from tbl_monitor m left join tbl_variable v on m.variable = v.id ");

sb.append(" left join tbl_variable_group g on v.variable_group = g.id ");

sb.append(" where v.active = true and g.active=true ");

//sb.append(" AND m.variable in " + variableIds);

sb.append(" AND exists ( select vtemp.id from tbl_variable vtemp where vtemp.selected=true and vtemp.id=m.variable)");

sb.append(" AND m.time between " + beginTime + " AND " + endTime );

sb.append(" order by m.time asc");

Query query = em.createNativeQuery(sb.toString());

//满足搜索条件的所有的时间的条数

int total = query.getResultList().size();

tableView.setTotal(total);

tableView.setTotalPage(total % page.getPageSize() == 0 ? total / page.getPageSize() : (total / page.getPageSize()) + 1);

query.setFirstResult(from);

query.setMaxResults(offset);

timeList = query.getResultList();

总结

以上是 java中对list分页并显示数据到页面实例代码 的全部内容, 来源链接: utcz.com/z/324470.html

回到顶部