`

ssh分页思考

SSH 
阅读更多
分页程序是自己构造写的,分页的时候只使用了三个变量,一个是totalPages总页码,一个是当前页码currentPages,一个就是数据list集合。
见代码:
引用

<div  class="pageNav">
<!--define the url of the previous page and next page-->
<s:url id="url_index" value="/pageAction.action">
<s:param name="assistDto.currentPages" value="1"></s:param>
</s:url>
<s:url id="url_pre" value="/pageAction.action">
<s:param name="assistDto.currentPages" value="#attr.assistDto.currentPages-1"></s:param>
</s:url>
<s:url id="url_next" value="/pageAction.action">
<s:param name="assistDto.currentPages" value="#attr.assistDto.currentPages+1"></s:param>
</s:url>
<s:url id="url_end" value="/pageAction.action">
<s:param name="assistDto.currentPages" value="#attr.assistDto.totalPages"></s:param>
</s:url>
<table align="center">
<tr>
<td>
<s:if test="#attr.assistDto.currentPages <= 1">首页&nbsp;&nbsp;</s:if>
<s:else><s:a href="%{url_index}">首页&nbsp;&nbsp;</s:a></s:else></td>
<td>
<s:if test="#attr.assistDto.currentPages > 1">
<s:a href="%{url_pre}">上一页&nbsp;&nbsp;</s:a></s:if>
<s:else>上一页&nbsp;&nbsp;</s:else></td>
<td>第${attr.assistDto.currentPages} 页&nbsp;&nbsp;</td>
<td><s:if test="#attr.assistDto.currentPages < #attr.assistDto.totalPages">
<s:a href="%{url_next}">下一页&nbsp;&nbsp;</s:a></s:if>
<s:else>下一页&nbsp;&nbsp;</s:else></td>
<td><s:if test="#attr.assistDto.currentPages == #attr.assistDto.totalPages || #attr.assistDto.totalPages<=1">尾页&nbsp;&nbsp;</s:if>
<s:else><s:a href="%{url_end}">尾页&nbsp;&nbsp;</s:a></s:else></td>
<td>共${attr.assistDto.totalPages}页 &nbsp;&nbsp;</td>
</tr>
</table>
</div>

当前页和总页码是封装在一个辅助dto里面作为属性的。
关于思考是由于我们的的数据量达到了百万级以上的时候这样每分页一次就发出一个查询语句,如果是单表的虽然数据量大也还好点,如果是数据量大而且跨表查询,那很明显速度会慢下来。
有几种思路可以实现加速处理:
1.也就是分页嘛,不会每次查很多。
2.加索引。
3.存储过程。
4.分页的基础上查出多一些数据,比如100条,每页显示10,那么我们在service层的时候就判断一下当前页等信息然后从内存中读取这个数据。
最后一个是自己想的,暂时还有业务的东西没有处理完,还没时间测试一下。放这有空回来的时候看到测试测试。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics