分页的代码设计与实现,通过项目的id查询出结果集,进行分页处理

通过项目的id进行查询结果集,进行分页。基于ssm的分页设计与实现。

第一步,自定义一个项目分页类。

public class Page<T> {
    private int firstIndex;
    private int pageSize=20;
    private int pageCount=1;
    private int totalPageCount;
    private int totalDataCount;
    private List<T> list;
    public int getFirstIndex() {
        return (this.getPageCount()-1)*this.getPageSize();
    }

    public int getPageSize() {
        return pageSize;
    }
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
    public int getPageCount() {
        return pageCount;
    }
    public void setPageCount(int pageCount) {
        this.pageCount = pageCount;
    }
    public int getTotalPageCount() {
        return (this.getTotalDataCount()-1)/this.getPageSize()+1;
    }

    public int getTotalDataCount() {
        return totalDataCount;
    }
    public void setTotalDataCount(int totalDataCount) {
        this.totalDataCount = totalDataCount;
    }
    public List<T> getList() {
        return list;
    }
    public void setList(List<T> list) {
        this.list = list;
    }       

}
第二步,对mapper文件进行写sql语句

    <select id="findPrjQuoteInfoByPrjId" resultMap="prjQuoteInfoResult">
    SELECT
    base.ID ID,
    base.NAM NAM,
    prj_customer.ENT_NAME ENT_NAME,
    saleUser.NAM SALE_PERSON,
    prj_quote_detail.BOM_NUM BOM_NUM,
    prj_quote_detail.COUNTS COUNTS,
    prj_quote_detail.NAM QUOTE_NAME,
    sys_dic.DES_ UNIT,
    prj_quote_detail.MODEL MODEL,
    prj_quote_detail.QUOTE_CATEGORY QUOTE_CATEGORY,
    prj_quote_detail.BRAND BRAND
    FROM prj_base base
    JOIN prj_customer ON prj_customer.ID=base.ID
    JOIN sys_user saleUser ON saleUser.ID=base.SALE_PERSON
    JOIN prj_quote_detail ON prj_quote_detail.PRJ_ID=base.id
    JOIN sys_dic ON prj_quote_detail.UNIT=sys_dic.ID
    WHERE base.ID=#{prjId}
    LIMIT #{firstIndex},#{pageSize}
    </select>

第三步、dao层代码实现

public interface PrjQuoteDetailMapper {
    
    public List<PrjQuoteDetail> findAll(@Param("pager") Pager pager, @Param("quoteCategory") Long quoteCategory, @Param("prjId") Long prjId);
    
    public void deleteByIds(@Param("ids") Long[] ids);
    
    public List<PrjQuoteDetail> findPrjQuoteDetailByPrjId(@Param("prjId") Long prjId);
    /**

分页查找

**/
  public List<PrjQuoteInfo> findPrjQuoteInfoByPrjId(Page<PrjQuoteInfo> page,@Param("prjId") Long prjId,@Param("firstIndex") int firstIndex,@Param("pageSize")int pageSize);
    
    public int queryCountById(@Param("prjId") Long prjId);
    /**
     * 通过项目的id查找出项目报价单的全部数据
     * @param prjId
     * @return
     */
    public List<PrjQuoteInfo> findPrjQuoteInfoById(@Param("prjId") Long prjId);
    
}

第四步、service层

public interface PrjQuoteDetailService extends BaseService<Long, PrjQuoteDetail>{

    public void updatePrjQuoteDetail(PrjQuoteDetail prjQuoteDetail)throws XpmBusinessException;
    
    public void savePrjQuoteDetail(PrjQuoteDetail prjQuoteDetail)throws XpmBusinessException;
    
    public List<PrjQuoteDetail> findAll(Pager pager, Long quoteCategory, Long prjId) throws XpmBusinessException;
    
    public void deleteByIds(Long[] ids) throws XpmBusinessException;
    
    public List<PrjQuoteDetail> findPrjQuoteDetailByPrjId(Long prjId)throws XpmBusinessException;
    
    public Page<PrjQuoteInfo> findPrjQuoteInfoByPrjId(Page<PrjQuoteInfo> page,Long prjId)throws XpmBusinessException;
    
    public List<PrjQuoteInfo> findPrjQuoteInfoById(Long prjId)throws XpmBusinessException;
}

service实现类

    @Override
    public Page<PrjQuoteInfo> findPrjQuoteInfoByPrjId(Page<PrjQuoteInfo> page, Long prjId) throws XpmBusinessException {
        
        List<PrjQuoteInfo> list = prjQuoteDetailMapper.findPrjQuoteInfoByPrjId(page, prjId, page.getFirstIndex(), page.getPageSize());
        int queryCountById = prjQuoteDetailMapper.queryCountById(prjId);
        page.setTotalDataCount(queryCountById);
        page.setList(list);
        return page;
    }

第五步、controller层

@RequestMapping("gotoPage/{id}")
    public String gotoPage(@PathVariable Long id,HttpServletRequest request,Page<PrjQuoteInfo> page){
        page = prjQuoteDetailService.findPrjQuoteInfoByPrjId(page, id);
        PrjQuoteAttach prjQuoteAttach =prjQuoteAttachService.findPrjQuoteAttachByPrjId(id);
        List<PrjQuoteInfo> PrjQuoteInfoList = prjQuoteDetailService.findPrjQuoteInfoById(id);
        List<PrjQuoteInfo> pageList = page.getList();
        request.setAttribute("pageList", pageList);
        request.setAttribute("PrjQuoteInfoList", PrjQuoteInfoList);
        request.setAttribute("page", page);
        request.setAttribute("prjQuoteAttach",prjQuoteAttach);
        return PAGES;
    }
    @RequestMapping("gotoList")
    @ResponseBody//通过ajax请求返回数据
    public List<PrjQuoteInfo> gotoList(Long id,HttpServletRequest request,int pageCount,Page<PrjQuoteInfo> page){
        page.setPageCount(pageCount);
        page = prjQuoteDetailService.findPrjQuoteInfoByPrjId(page, id);
        List<PrjQuoteInfo> pageList = page.getList();
        return pageList;
    }

第六步、web层jsp页面

<!-- 下面是对页码的处理-->
    <div align="center">

        第<span id="pageCount">${page.pageCount}</span>/${page.totalPageCount}页&nbsp;&nbsp;
        <c:if test="${fn:length(PrjQuoteInfoList)>20}">
            <button οnclick="firstPage()">首页</button>&nbsp;&nbsp;
            <button οnclick="beforePage()">上一页</button>&nbsp;&nbsp;
            <button οnclick="nextPage()">下一页</button>&nbsp;&nbsp;
            <button οnclick="lastPage()">尾页</button>&nbsp;&nbsp;
            </c:if>
        <span>总记录数:${fn:length(PrjQuoteInfoList)}条</span>&nbsp;&nbsp;
    </div>
</div>

对应的js方法

var pageCount = ${page.pageCount};
    var id = ${pageList[0].id}
    var totalPageCount = ${page.totalPageCount};
    /**
    尾页
    **/
    function lastPage(){
        pageCount = ${page.totalPageCount};
        $.ajax({
            type : "post",
            url : top.XPM.ctx + "/project/prjQuoteInfo/gotoList",
            data : {
                "pageCount" : pageCount,
                "id" : id
            },
            success : function(data) {
                $('#table3 tr:gt(4)').remove();
                creatTableTr(data,pageCount);
            }

        });
        $("#pageCount").html(pageCount);
    }
    
    /**
    首页
    **/
    function firstPage(){
        pageCount=1;
        $.ajax({
            type : "post",
            url : top.XPM.ctx + "/project/prjQuoteInfo/gotoList",
            data : {
                "pageCount" : pageCount,
                "id" : id
            },
            success : function(data) {
                $('#table3 tr:gt(4)').remove();
                creatTableTr(data,pageCount);
            }
        });
        $("#pageCount").html(pageCount);
    }
    /**
    上一页
    **/
    function beforePage(){
        pageCount--;
        if(pageCount>1||pageCount==1){
        $.ajax({
            type : "post",
            url : top.XPM.ctx + "/project/prjQuoteInfo/gotoList",
            data : {
                "pageCount" : pageCount,
                "id" : id
            },
            success : function(data) {
                $('#table3 tr:gt(4)').remove();
                creatTableTr(data,pageCount);
            }
        });
        $("#pageCount").html(pageCount);
    }else if(pageCount<1){
        pageCount=1;
        $.ajax({
            type : "post",
            url : top.XPM.ctx + "/project/prjQuoteInfo/gotoList",
            data : {
                "pageCount" : pageCount,
                "id" : id
            },
            success : function(data) {
                $('#table3 tr:gt(4)').remove();
                creatTableTr(data,pageCount);
            }
        });
        $("#pageCount").html(pageCount);
    }
}
    function nextPage() {
        debugger
        pageCount++;
        if(pageCount>${page.totalPageCount}){
        pageCount=${page.totalPageCount};
        $.ajax({
            type : "post",
            url : top.XPM.ctx + "/project/prjQuoteInfo/gotoList",
            data : {
                "pageCount" : pageCount,
                "id" : id
            },
            success : function(data) {
                $('#table3 tr:gt(4)').remove();
                creatTableTr(data,pageCount);
            }
        });
    }else{
        $.ajax({
            type : "post",
            url : top.XPM.ctx + "/project/prjQuoteInfo/gotoList",
            data : {
                "pageCount" : pageCount,
                "id" : id
            },
            success : function(data) {
                $('#table3 tr:gt(4)').remove();
                creatTableTr(data,pageCount);
            }
        });
    }
        $("#pageCount").html(pageCount);
    }
    function creatTableTr(data,pageCount){
        debugger
        var j = 1;
        for (var i = 0; i < data.length; i++) {
            var bomNum = data[i].bomNum;
            if (bomNum != null) {
                bomNum = data[i].bomNum;
            } else {
                bomNum = '';
            }
            var quoteName = data[i].quoteName;
            var model = data[i].model;
            var unit = data[i].unit;
            var counts = data[i].counts;
            var brand = data[i].brand;
            var quoteCategory = data[i].quoteCategory;
            if (quoteCategory == 1) {
                quoteCategory = '公司硬件';
            } else if (quoteCategory == 2) {
                quoteCategory = '外购仪表';
            } else if (quoteCategory == 3) {
                quoteCategory = '外购电气';
            } else if (quoteCategory == 4) {
                quoteCategory = '其他外购件';
            }
            var a = pageCount-1;
            var z = a*20+j;
            $('#table3').append(
                    '<tr>' + '<td style="width: 100px">' +z+'</td>' + '<td style="width: 140px">' + bomNum
                            + '</td>' + '<td style="width: 220px">' + quoteName + '</td>'
                            + '<td style="width: 61px">' + model + '</td>' + '<td style="width: 31px">' + unit
                            + '</td>' + '<td style="width: 41px">' + counts + '</td>'
                            + '<td style="width: 61px">' + brand + '</td>' + '<td style="width: 71px">'
                            + quoteCategory + '</td>' + '</tr>');
        j++;
    }
        for(var dataValue=data.length;dataValue<20;dataValue++){
            $('#table3').append('<tr>'+'<td>'+'</td>'+'<td>'+'</td>'+'<td>'+'</td>'+'<td>'+'</td>'+'<td>'+'</td>'+'<td>'+'</td>'+'<td>'+'</td>'+'<td>'+'</td>'+'</tr>');
        }
    }

传入一个pageCount,ajax把返回出的数据进行解析,从而得到自己想要的数据,遍历出来即可实现分页。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

互联网技术云学堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值