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="+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 οnclick="goPage(1)">首页</a>
	        <a οnclick="goPage(${paging.currentPage-1})">上一页</a>
	      </c:when>
	      <c:when test="${paging.currentPage==1}">
		   <a οnclick="goPage(${paging.currentPage+1})">下一页</a>
		   <a οnclick="goPage(${paging.totalPage})">末页</a>
	      </c:when>
	      <c:when test="${paging.currentPage==paging.totalPage}">
		   <a οnclick="goPage(1)">首页</a>
		   <a οnclick="goPage(${paging.currentPage-1})">上一页</a>
	      </c:when>
	      <c:otherwise>
		   <a οnclick="goPage(1)">首页</a>
		   <a οnclick="goPage(${paging.currentPage-1})">上一页</a>
		   <a οnclick="goPage(${paging.currentPage+1})">下一页</a>
		   <a οnclick="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();




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值