您的位置:首页 > 其它

分页处理

2015-11-06 16:23 281 查看
在实习的时候,用easyUI 框架完成了毕业设计的后台开发,其中用到的最主要的一个功能就是分页显示。当时看着姜师傅之前写的代码,我也仿照这他的写完了,但是到底为什么这样写一点也不知道,现在想想那是虎真是不求甚解,怪不得姜师傅总说我“还不知道它是什么呢,就写!;你要动脑啊!...” 等等一系列的提醒,现在想想人家真是没说错,当时的我就是不求甚解。现在正是参加工作了,现在的项目有个功能用到分页处理,再次静下心来看他们的代码,发现也不是很难看懂,不管怎样,这也算是一种成长吧。

(1) EasyUI项目的分页:

首先定义Page类,用于前端modle(模型)展现页面的页面总数,行数,

public DisplaytagPage<Position> queryPositionInfo(DisplaytagPage dp,Integer p_id,Integer pages,Integer rows){
Map<String,Integer>map=new HashMap<String,Integer>();
if(p_id!=null && p_id!=0){
map.put("p_id",p_id);
}
if(rows!=null &&rows!=0){
map.put("rows",rows);
}
if(pages!=null&&pages!=0){
map.put("pages",(pages-1)*20);
}else {
map.put("beginrows",0);
map.put("endrows",15);
}
List<Position> list=templateDao.queryPositionShow(map);//传给dao层需要展示页面每页的行数(首次展示的页面)
Integer count=templateDao.queryPositionShowCount(map);//查询所有的数据个数
dp.setList(list);
dp.setFullListSize(list.size());
dp.setTotalPages(count);
return dp;
}
在查询数据时:

<span style="white-space:pre">	</span><!--获得页面的每次请求所展现的数据-->
<span style="white-space:pre">	</span><select id="query_position_Displaytag" resultClass="position" parameterClass="java.util.Map">
SELECT * from  k_position  p
where 1=1
<isNotEmpty prepend="AND" property="p_id">
p.p_id=#p_id#
</isNotEmpty>
LIMIT #pages#, #rows#
</select>
<span style="white-space:pre">	</span><!--获得数据的总数-->
<select id="query_position_Displaytag_count" resultClass="java.lang.Integer" parameterClass="java.util.Map">
SELECT count(p_id) from  k_position  p
where 1=1
<isNotEmpty prepend="AND" property="p_id">
p.p_id=#p_id#
</isNotEmpty>
</select>
以上是分页处理的后台获取数据方式,在前台只要传(Integer rows,Integer page)

$("#tt").datagrid({
method:'POST',
iconCls:'icon-save',
nowrap: true,
striped: true,
border: true,
url: "${pageContext.request.contextPath}/admin/queryAllPositionInfo",
rownumbers: true,
pagination: true,
singleSelect: true,
pageList:[5,10,15,20,25],
pageSize: 20,
queryParams: para,
height:500,
pageNumber: 1,
columns:[[
{field:"p_name", title:"职位名称 ",align:"center", width:getWidth("tt", 0.07)},
{field:"doConfirm", title:"操作", align:"center", width:getWidth("tt", 0.10),
formatter:function(val, data, ind) {
var htmls= '<a href="javascript:showChangePositionPage(' + data.p_id + ');">修改</a>   <a href="javascript:delPositionItem(' + data.p_id + ');">删除</a>';
return htmls;
}}
]]
});


(2)现在项目的分页处理:

<1>同样定义页面展示模板 Page:

<span style="white-space:pre">	</span>private int pageTotal;		//总页数
private int pageSize;		//每页多少数据
private int pageNo;		//当前页
private int dataTotal;		//总数据条数


<2>前台换给后台:要展示的数据,及请求的页数 (Data data,Page page)

<3>service层处理,怎样显示:

判断传入参数若page为空,则显示初始页面(需要设置初始的起始页)ibatis 中的<![CDATA[ and c1.time <= #{userLog.time_end} ]]> 防止不兼容符号,错误识别。

order by c1.time desc limit #{page.pageSize} offset #{page.pageSize}*(#{page.pageNo}-1)

limit使用规范(以后要学)

<4>Dao层的Map.xml中,order by c1.time desc limit #{page.pageSize} offset #{page.pageSize}*(#{page.pageNo}-1)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: