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

作者:你的承諾早已氾黃 时间:2023-05-22 00:39:10 

有时候需要根据条件查询得出的数据较多,需要分页显示到页面上。这时点击下一页就不方便每次带查询条件在数据库中分页。可以在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();

来源:http://blog.csdn.net/u012843873/article/details/79216654

标签:java,list,分页
0
投稿

猜你喜欢

  • 在java代码中获取JVM参数的方法

    2022-08-15 01:05:43
  • 让Java后台MySQL数据库能够支持emoji表情的方法

    2022-12-30 04:24:45
  • activemq整合springboot使用方法(个人微信小程序用)

    2023-07-08 22:29:55
  • idea统计代码行数Statistic的步骤详解

    2021-12-06 13:32:55
  • java可以作为第一门编程语言学习吗

    2021-05-25 07:52:37
  • 详解App保活实现原理

    2022-01-20 17:59:10
  • android studio与手机连接调试步骤详解

    2023-06-09 09:54:26
  • java迷宫算法的理解(递归分割,递归回溯,深搜,广搜)

    2022-10-22 10:36:31
  • Android开发笔记之:返回键的复写onBackPressed()介绍

    2022-04-29 17:54:40
  • Java Scala实现数据库增删查改操作详解

    2022-02-03 05:09:22
  • javaWeb 四大域对象详细介绍

    2021-08-16 14:04:01
  • Idea2020.2创建JavaWeb项目(部署Tomcat)方法详解

    2023-11-02 13:29:52
  • Java毕业设计实战之在线网盘系统的实现

    2023-03-05 05:42:47
  • 基于Mybatis Plus实现代码生成器CodeGenerator

    2021-09-28 12:18:21
  • Java Swing JButton按钮的实现示例

    2023-05-05 00:25:43
  • Android 将本地资源图片转换成Drawable,进行设置大小操作

    2023-06-19 17:38:55
  • Android CountDownTimer案例总结

    2023-12-21 05:40:36
  • Android 自定义组件卫星菜单的实现

    2023-08-16 21:29:29
  • 浅析C# 函数的传值与传址

    2023-11-22 04:46:57
  • SpringBoot Aop 详解和多种使用场景解析

    2022-10-02 12:03:47
  • asp之家 软件编程 m.aspxhome.com