分页demo 前端+后台 (union 与union all 的区别 以及分页limit,offset的应用)

 

记重点   

1.UNION去重且排序,UNION ALL不去重不排序。

2.
sql 中 limit 与 limit,offset连用的区别


① select * from table limit 2,1;                 

//含义是跳过2条取出1条数据,limit后面是从第2条开始读,读取1条信息,即读取第3条数据

② select * from table limit 2 offset 1;      

//含义是从第1条(不包括)数据开始取出2条数据,limit后面跟的是2条数据,offset后面是从第1条开始读取,即读取第2,3条

来源: http://blog.csdn.net/yplee_8/article/details/52252549
 
通过limit和offset 或只通过limit可以实现分页功能。
假设 numberperpage 表示每页要显示的条数,pagenumber表示页码,那么 返回第pagenumber页,每页条数为numberperpage的sql语句:

代码示例:
语句3:select * from studnet limit (pagenumber-1)*numberperpage,numberperpage
语句4:select * from student limit numberperpage offset (pagenumber-1)*numberperpage

例子:

前端:

<div class="div-rs">
	<div class="maplist">
		<div style="text-align:right;color:#999;" class="totalnum pr10 pt10">共 0 个</div>
			 <ul>
				<li>
											
				</li>
						
			</ul>
		</div>
	<div style="padding:15px 0;text-align:center;display: none" class="gspager">
		<div class="prev">上页</div>
				<div class="indi">
					<div class="now">1</div> /
						<div class="total">1</div>
					</div>
				    <div class="next">下页</div>
		        </div>
	</div>
</div>

效果:

                                                

js:

分页
// 查询 翻页
	$('#searchall-result').on('click', '.gspager .next,.gspager .prev', function() {
		var gspager = $(this).closest('.gspager');
		var nowobj = gspager.find('.now');
		var total = gspager.find('.total');

		var num = nowobj.text() * 1;

		if($(this).hasClass('next')) {
			nowobj.text(num + 1);
			if(nowobj.text() * 1 == total.text() * 1) {
				gspager.find('.next').hide();
				gspager.find('.prev').show();

			}
		} else {
			nowobj.text(num - 1);
			if(nowobj.text() * 1 == 0) {
				gspager.find('.prev').hide();
				gspager.find('.next').show();

			}
		}

		$('#form-searchall').trigger('submit');
	})

	/**
	 * @param pager:翻页div;allsize 总数据条数;pagesize:条数; pagenum:页码;
	 */
	var renderPage = function(pager, allsize, pagesize, pagenum) {
		pagenum = pagenum * 1;
		//翻页数字更新
		var num = Math.ceil(allsize.count * 1 / pagesize * 1);
		pager.find('.total').text(num + "");
		pager.find('.now').text(pagenum + "");

		if(pagenum == 1) {
			pager.find('.prev').hide();
		} else {
			pager.find('.prev').show();
		}
		if(pagenum == num) {
			pager.find('.next').hide();
		} else {
			pager.find('.next').show();
		}
		if(num > 1) {
			pager.show();
		} else {
			pager.hide();
		}
	}

$weixiuhistory.on('change', 'select', function() {
		var pagesize = 1,
			gspager = $weixiuhistory.find('.gspager');
		pagenum = 1; //默认查第一页
		var userid = JSON.parse(localStorage.getItem('sysuser')).userid;
		history_list(userid, PageSize_history, pagenum);
	})

	$('#weixiuhistory').on('click', '.gspager .next,.gspager .prev', function() {
		var gspager = $(this).closest('.gspager');
		var nowobj = gspager.find('.now');
		var total = gspager.find('.total');
		var num = nowobj.text() * 1;
		if($(this).hasClass('next')) {
			nowobj.text(num + 1);
			if(nowobj.text() * 1 == total.text() * 1) {
				gspager.find('.next').hide();
				gspager.find('.prev').show();
			}
		} else {
			nowobj.text(num - 1);
			if(nowobj.text() * 1 == 0) {
				gspager.find('.prev').hide();
				gspager.find('.next').show();

			}
		}
		var userid = JSON.parse(localStorage.getItem('sysuser')).userid;
		userid === "" ? 'c9ffe1ae4f5043d5bd3c091198f313bf' : userid;
		history_list(userid, PageSize_history, gspager.find('.now').text());
	})

})

java:

分页: sql最后ssql += "limit @pagesize OFFSET @pagestart";

            int pagesize = allp.getInt("pagesize");
            int pagenum = allp.getInt("pagenum") - 1;
            int pagestart = pagenum * pagesize;
            sql.params().set("pagesize", pagesize);
            sql.params().set("pagestart", pagestart);    
            sql.vars().set("likemassage", likemassage); 

postgreSql:

with tmp_obj as (select d.name,'' as adress,'point' as category,st_astext(geom) as geom from ytqpoint d where  d.name like '%科技二路%'
union all
select b.name,'','line',st_astext(geom) as geom from ytqline b  where  b.name  like '%科技二路%' 
union all
select c.name,'','area',st_astext(geom) as geom from ytqmian c where  c.name like '%科技二路%' 
union all
select a.name,a.adress,a.category,st_astext(geom) as geom from ytcypoi a  where  (a.name  like '%科技二路%' or a.category like  '%科技二路%')) 
select distinct on(name) name,adress,category,geom,st_astext(ST_Centroid(geom)) as center from tmp_obj   limit 4 OFFSET 0

上面是搜索科技二路的sql

分页功能搞定

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值