jquery分页 mysql(sqlserver、oracle)分页

              进段时间手上没有什么事,整理电脑的时候,发现我关于jquery学习文件夹中,有好几个不同形式的分页,各种各样的,五花八门,然后就整理了一下。分页是项目最常见的功能之一,对于大神来说,那是小菜一碟,但是对于刚刚进入IT行业的菜鸟来说,有时候还真是一个头疼的问题。欢迎各位路过的大神不吝赐教,指出错误,相互交流一下。对于新手来说可以借鉴一下。下面进入正题:

     一:分页效果

            我贴出几个不同的分页效果,有适合自己的就看看,没有合适的就轻轻的来,再轻轻的走。

      

          入手编写程序到现在经常使用的就这三种形式的分页,其中第二种最为常见。

  

    二:分页思路

         常见的有以下几种:

        1、基于sql语句分页           2、 采用jquery插件进行分页              3、对返回的集合进行分页     还有其他的,个人能力有限,就不一一列举啦。

        

    三 : 分页原理

         分页原理实质就是:pageNum(当前页)     pageSize(页容量)  ,向后台提交请求的参数也是这两个。


    四: 实现分页相关代码

         1.sql语句分页(基于最基础的分页)

              sqlserver语句:  select top pagesize from table1 where id not in(select top  pagesize*(pagenum-1)  id  from table1)

              mysql     语句:select  *  from tb_notice  order  limit  pagenum ,pagesize  

              oracle     语句:  select  t1. *  from (select  tx.*,  rownum as number from table2 as t2  where number<20 )  as  t1  where t1.number>10 


        2.采用jquery插件分页

            网上有很多写好的插件,这里我上传一个我同事曾经自己封装的一个js分页插件,有需要的朋友可以下载看看哈。

           http://download.csdn.net/detail/u010117166/6441955  这是下载链接地址。


      3 对返回的集合进行分页

                int pageIndex1 = 0; // 当前页
int lastIndex = 0; // 最后一页
int pageSize =3; // 页容量
// 取出当前页的值
String pageIndex = request.getParameter("pageIndex");
try {
List<TbNotice> list1 = noticeservice.getList();
if (pageIndex == null) {
 pageIndex1= 1;
} else {
 pageIndex1 = Integer.parseInt(pageIndex);
}
// 得到最后一页的页码
lastIndex = list1.size() % pageSize== 0 ? (list1.size() / pageSize) : (list1
.size() /pageSize + 1);
if ( pageIndex1< 1) {
 pageIndex1 = 1;
}
if ( pageIndex1 > lastIndex) {
 pageIndex1= lastIndex;
}


                       //对集合进行分页
TbNotice notice=null;
List<TbNotice> list=new ArrayList<TbNotice>();    

if( pageIndex1==1)
{
for(int i= pageIndex1-1;i<pageSize* pageIndex1;i++)
{
notice= list1.get(i);
list.add(notice);
}
}else
{
if(list1.size()<pageSize* pageIndex1)
{
for(int i=pageSize*( pageIndex1-1);i<list1.size();i++)
{

notice= list1.get(i);
list.add(notice);
}
}else
{
for(int i=pageSize*( pageIndex1-1);i<pageSize* pageIndex1;i++)
{

notice= list1.get(i);
list.add(notice);
}
}

}

                        //存值

                        request.setAttribute("list", list);
request.setAttribute("count", lastIndex);
request.setAttribute("pageIndex", pageIndex1);


     五  分页demo

             demo是使用springmvc+mybtis+mysql的框架,自己可以修改一下,然后运行。

              1.jsp页面:

                         <link rel="stylesheet" href="css/page.css" type="text/css"></link>

                               page.css:

                                       #page ul.pages {
                                                      display:block;
                                                       border:none;
                                                       text-transform:uppercase;
                                                       font-size:12px;
                                                       margin:10px 0 50px;
                                                       padding:0;
                                                    }


                                      #page ul.pages li {
                                                    list-style:none;
                                                    float:left;
                                                    border:1px solid #ccc;
                                                    text-decoration:none;
                                                    margin:0 5px 0 0;
                                                     padding:5px;
                                                 }


                                    #page ul.pages li:hover {
                                                    border:1px solid #003f7e;
                                                }


                                   #page ul.pages li.pgEmpty {
                                                    border:1px solid #eee;
                                                    color:#eee;
                                               }


                                    #page ul.pages li.pgCurrent {
                                                   border:1px solid #003f7e;
                                                   color:#000;
                                                   font-weight:700;
                                                   background-color:#eee;
                                             }

                         <script type="text/javascript" src="js/jquery.pager.js"></script>

                         jquery.pager.js:

                                     (function($) {
        $.fn.pager = function(options) {
        var opts = $.extend({}, $.fn.pager.defaults, options);
        return this.each(function() {
            $(this).empty().append(renderpager(parseInt(options.pagenumber), parseInt(options.pagecount), options.buttonClickCallback));
            $('.pages li').mouseover(function() { document.body.style.cursor = "pointer"; }).mouseout(function() { document.body.style.cursor = "auto"; });
        });
    };
     function renderpager(pagenumber, pagecount, buttonClickCallback) {
        var $pager = $('<ul class="pages"></ul>');
        $pager.append(renderButton("首页", pagenumber, pagecount, buttonClickCallback)).append(renderButton("上一页", pagenumber, pagecount, buttonClickCallback));
        var startPoint = 1;
        var endPoint = 9;


        if (pagenumber > 4) {
            startPoint = pagenumber - 4;
            endPoint = pagenumber + 4;
        }


        if (endPoint > pagecount) {
            startPoint = pagecount - 8;
            endPoint = pagecount;
        }


        if (startPoint < 1) {
            startPoint = 1;
        }
        for (var page = startPoint; page <= endPoint; page++) {


            var currentButton = $('<li class="page-number">' + (page) + '</li>');


            page == pagenumber ? currentButton.addClass('pgCurrent') : currentButton.click(function() { buttonClickCallback(this.firstChild.data); });
            currentButton.appendTo($pager);
        }
        $pager.append(renderButton("下一页", pagenumber, pagecount, buttonClickCallback)).append(renderButton("末页", pagenumber, pagecount, buttonClickCallback));


        return $pager;
    }
    function renderButton(buttonLabel, pagenumber, pagecount, buttonClickCallback) {


        var $Button = $('<li class="pgNext">' + buttonLabel + '</li>');


        var destPage = 1;
        switch (buttonLabel) {
            case "首页":
                destPage = 1;
                break;
            case "上一页":
                destPage = pagenumber - 1;
                break;
            case "下一页":
                destPage = pagenumber + 1;
                break;
            case "末页":
                destPage = pagecount;
                break;
        }
        if (buttonLabel == "首页" || buttonLabel == "上一页") {
            pagenumber <= 1 ? $Button.addClass('pgEmpty') : $Button.click(function() { buttonClickCallback(destPage); });
        }
        else {
            pagenumber >= pagecount ? $Button.addClass('pgEmpty') : $Button.click(function() { buttonClickCallback(destPage); });
        }
        return $Button;
    }
    $.fn.pager.defaults = {
        pagenumber: 1,
        pagecount: 1
    };
})(jQuery);                               




                          <script type="text/javascript">   

                           $(function(){
                           pagejump(0);
                     });
  
                         function pagejump(pageNo){
                    $.post("notice/getNoticeList",{pageIndex:pageNo},function(data){

             
           $("#getnoticelist").empty();
          if(data.list.length<=0)
                   {
             $("#getnoticelist").append("<span style='color:red;font-size:15px;'><center>没有公告信息!</center></span>");
            }else
                  {

                              //公告列表
              $("#getnoticelist").append("<div style='margin-left:30px;margin-bottom:15px;'><div style='font-family:微软雅黑;font-size:13px;'><img src='${ctx}/member/images/point.jpg'><a href='${ctx}/notice/getNoticeById?noticeId="+notice[i].noticeid+"' target='_blank' >"+notice[i].title+"</a><span></span></div> <div style='margin-left:12px;width:800px;height:auto;'><p style='text-align:left;'> <span style='font-family:微软雅黑;font-size:13px;font-weight:normal;font-style:normal;text-decoration:none;color:#333333;margin-left:20px;'>"+abstract1_+"<br/>"+abstract2_+"</span></p></div></div> <div style='margin-left:40px;'></div>");
     }
        }


   var pageCount=data.count;  
   $("#page").pager({ pagenumber: pageNo, pagecount: pageCount, buttonClickCallback: pagejump });
    var pagerWidth = 95*2+$(".page-number").length*33;
    $("#page").css("width",pagerWidth);  

         },'json'); 
            }

</script>


                <!--公告列表   --> 
        <div id="getnoticelist">  </div>

                 <!--分页-->
        <div id="page" style="margin: auto;"></div>      


           2  控制层controller

                @RequestMapping(value = "/getNoticeList")
        public String getNoticeList(HttpServletRequest request,HttpSession session, PrintWriter writer) {
JSONObject jsonObj = new JSONObject();
int pageIndex1 = 0; // 当前页
int lastIndex = 0; // 最后一页
int pageSize =3; // 页容量
// 取出当前页的值
String pageIndex = request.getParameter("pageIndex");
try {
List<TbNotice> list1 = noticeservice.getList();
if (pageIndex == null) {
pageIndex1 = 1;
} else {
pageIndex1 = Integer.parseInt(pageIndex);
}
// 得到最后一页的页码
lastIndex = list1.size() % pageSize== 0 ? (list1.size() / pageSize) : (list1
.size() /pageSize + 1);
if (pageIndex1 < 1) {
pageIndex1 = 1;
}
if (pageIndex1 > lastIndex) {
pageIndex1 = lastIndex;
}
if (list1.size() > 0) {
List<TbNotice> list = noticeservice.getNoticeList((pageInd - 1)
* pageSize, pageSize);
jsonObj.put("list", list);
jsonObj.put("count", lastIndex);
jsonObj.put("pageIndex", pageIndex1 );
jsonObj.put("lastIndex", lastIndex);

} else {
logger.info("没有公告信息!");
jsonObj.put("list",list1.size());
jsonObj.put("count", 1);
jsonObj.put("pageIndex",1);
jsonObj.put("lastIndex", lastIndex);
}
} catch (Exception e) {
e.printStackTrace();
}
writer.print(jsonObj);
return null;
}


      3  services

            public List<TbNotice> getNoticeList(int start, int pageSize) {
List<TbNotice> noticelist = tbNoticeMapper.getPageNotice(start,
pageSize);
return noticelist;
}


     4 mapper

         List<TbNotice> getPageNotice(@Param("start") int start,
@Param("pageSize") int pageSize);

 

    5  数据库

         <select id="getPageNotice" parameterType="map" resultType="com.rdkl.register.entity.tb.TbNotice">
               select noticeid, title,abstracts,content,createtime,pubuser,pubtime,sort
                    from tb_notice where state=2 order by sort desc limit #{start},#{pageSize} 
        </select>


差不多啦吧,有需要的朋友,自己拿去研究一下。事在人为,只要持之以恒,一切问题都不是问题。

              


                    

    






























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值