java中對list進行分頁,並將顯示資料到頁面

來源:互聯網
上載者:User

有時候需要根據條件查詢得出的資料較多,需要分頁顯示到頁面上。這時點擊下一頁就不方便每次帶查詢條件在資料庫中分頁。可以在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 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();




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.