SSH纳税服务项目重点细节归纳6(分页篇)

1.分页需求对象创建

1.分页需求对象
数据总数:前台显示需要
当前页号:涉及数据库搜索计算
总页号:前台显示+涉及前台翻页计算
页面条目数:涉及和数据库搜索计算
数据库内容:没有这东西的话你做什么分页- -

public class PageResult {

    //数据总数
    private long totalCount;
    //当前页号
    private int pageNo;
    //总页号
    private int totalPageCount;
    //页面条目数
    private int pageSize;
    //数据库内容
    private List items;

2.关于当前页号与总页数计算

if (totalCount != 0) {
            int tem = (int) (totalCount/pageSize);
            this.totalPageCount = (totalCount%pageSize==0)?tem:(tem+1);
            this.pageNo = pageNo;
        }else{
            this.pageNo = 0;
        }

页号:如果没有数据赋0处理
总页数:编程语言思想:如果(数据总数/页面条目数)有余数要在结果后+1

3.后台hibernate数据搜索思想

  • 从当前页号计算出从哪一条数据开始获取setFirstResult实现。
    因为之前默认页号0,如果页号<1,设置回1,至少会有一页
    第一条数据位置=(页号-1)*也数据量。
  • 获取页面条目数的数据量setMaxResults实现。
if(pageNo < 1) pageNo =1;
q.setFirstResult((pageNo-1)*pageSize);
q.setMaxResults(pageSize);
List items = q.list();

4.获取总数据量
利用函数+uniqueResult()方法降低服务器开销

long totalCount = (Long) q2.uniqueResult();
语句:"SELECT COUNT(*) "+fromClause+whereClause;

2.前台动态引入分页栏

数据显示页面

<jsp:include page="/common/pageNavigator.jsp"></jsp:include>

分页栏
s:if判断:

  • 没有数据不显示分页栏
  • 翻页判断,当前页面>1才显示上一页按钮,当前页面<总页数才显示下一页按钮
<s:if test="pageResult.totalCount > 0">
        <table width="100%" class="pageDown" border="0" cellspacing="0"
            cellpadding="0">
            <tr>
                <td align="right">
                    总共<s:property value="pageResult.totalCount"/>条记录,当前第 <s:property value="pageResult.pageNo"/> 页,共<s:property value="pageResult.totalPageCount"/> 页 &nbsp;&nbsp;
                            <s:if test="pageResult.pageNo > 1">
                                <a href="javascript:doGoPage(<s:property value="pageResult.pageNo-1"/>)">上一页</a>
                            </s:if>&nbsp;&nbsp;
                            <s:if test="pageResult.pageNo < pageResult.totalPageCount">
                                <a href="javascript:doGoPage(<s:property value="pageResult.pageNo+1"/>)">下一页</a>
                            </s:if>
                    到&nbsp;<input id="pageNo" name="pageNo" type="text" style="width: 30px;" onkeypress="if(event.keyCode == 13){doGoPage(this.value);}" min="1"
                    max="<s:property value="pageResult.totalPageCount"/>" value="<s:property value="pageResult.pageNo"/>" /> &nbsp;&nbsp;
                </td>
            </tr>
        </table>    
        </s:if>

js跳转方法
pageNo在传值时根据需求+-

<script type="text/javascript">
        function doGoPage(pageNo){
            document.getElementById('pageNo').value = pageNo;
            document.forms[0].action = list_url;
            document.forms[0].submit();
        }
</script>

猜你喜欢

转载自blog.csdn.net/weixin_42839338/article/details/81432123