您的位置:首页 > 数据库 > Oracle

jquery分页 mysql(sqlserver、oracle)分页

2013-10-23 15:40 417 查看
进段时间手上没有什么事,整理电脑的时候,发现我关于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>

差不多啦吧,有需要的朋友,自己拿去研究一下。事在人为,只要持之以恒,一切问题都不是问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: