首页 > 编程 > Java > 正文

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

2019-11-26 10:16:57
字体:
来源:转载
供稿:网友

有时候需要根据条件查询得出的数据较多,需要分页显示到页面上。这时点击下一页就不方便每次带查询条件在数据库中分页。可以在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分页并显示数据到页面实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表