基与datatable的分页补充

前台分页和后台分页的区别

前台分页:

                缺点:下载量大,显示慢,加载时用户体验不好,如果有即时内容,不能翻页时就更新

                 优点:服务器压力请求少,换页时用户体验好

后台分页:与前台分页相反

使用后台分页的情况:数据量巨大是,新闻类,公开的等用后台分页

实体类

@Entity

@Table(name="T_USER")

public class User{

  @Id

 @Column(name="ID")

 private String id;

 @Column(name="NAME")

  private String name;

@Column(name="NAME_CODE")

private String nameCode;

public void setName(String name){

  this.name=name;

}

public String getName(){

return name;

}

public void setId(String id){

this.id=id;

}

public String geiId(){

return id;

}

public void setNameCode(String nameCode){

this.nameCode=nameCode;

}

public String getNameCode(){

return nameCode;

}

jsp页面

<div>
<div class="form-inline">
<div class="form-group marginone">
<label >名称 :</label>
<input class="form-control" placeholder="名称" type="text" name="name" id="nameSearch">
</div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<div class="form-group marginone pull-right" >
<button class="btn btn-default" id="serchbtn">
<i class="fa fa-search">&nbsp;&nbsp;查&nbsp;&nbsp;询&nbsp;&nbsp;</i>
</button>&nbsp;&nbsp;&nbsp;
</div>
</div>
<br>
<div class="">
<table id="search" class="table table-striped table-bordered dataTable no-footer" width="100%" role="grid" style="width: 100%;">
<thead>
<th>名称</th>
<th>名称证号</th>
</thead>
<tbody>
<tr>
</tr>
</tbody>
<tfoot>
<tr>
<td></td>
</tr>
</tfoot>
</table>
</div>
</div>

在进行分页操作前,必须知道开启服务器模式后会向服务器发送的参数的含义:

length:告诉服务器每页显示的数据条数

start:第一条数据的起始位置

draw:绘制计数器,(特殊:服务器接收到参数后,需要返回到前台)

1.在前台开启服务器模式

2.在后台接受前台传递过来的参数

public Map<String,Object> search145(UserInfo UserInfo,int length,int draw,int start)


2.javaScript
script>
$(function () {
var oTable145=$("#search145").DataTable({
"ajax":{
"url":"search/search145",
"type":"POST"
},
"autoWidth":true,//自动计算列宽
"scrollX": true,
"paging": true,//分页,默认true
"bSort": false,//能否对列进行排序操作
"lengthChange": false,//每页显示数据条数能否修改,默认true
"pageLength": 15,//每页显示数据个数
"searching": false,//本地搜索默认true
"serverSide": true,//服务器分页这个配置必须为true
"columns":[
{"data":"name"},
{"data":"nameCode"}
],
language: {//代替表下方的英文页码说明
"sProcessing": "处理中...",
"sLengthMenu": "每页 _MENU_ 项",
"sZeroRecords": "没有匹配结果",
"sInfo": "当前显示第 _START_ 至 _END_ 项,共 _TOTAL_ 项。",
"sInfoEmpty": "当前显示第 0 至 0 项,共 0 项",
"sInfoFiltered": "(由 _MAX_ 项结果过滤)",
"sInfoPostFix": "",
"sSearch": "搜索:",
"sUrl": "",
"sEmptyTable": "表中数据为空",
"sLoadingRecords": "载入中...",
"sInfoThousands": ",",
"oPaginate": {
"sFirst": "首页",
"sPrevious": "上页",
"sNext": "下页",
"sLast": "末页",
"sJump": "跳转"
}
}
});
function search(){
var name=$("#nameSearch").val();
var param={
"name":name//(参数名,参数值)在参数处理中,参数名和Controller中一样就可以了,做对象处理参数,参数名必须为实体类的属性名
};
oTable.settings()[0].ajax.data=param;//将参数提交到后台,另一个文中会写
oTable.ajax.reload();//重新加载页面,这里是ajax不翻页,刷新
}

$("#serchbtn").click(
function () {
search();//调用提交参数的函数
}
);
});
</script>

在进行分页操作前,必须知道开启服务器模式后会向服务器发送的参数的含义:

length:告诉服务器每页显示的数据条数

start:第一条数据的起始位置

draw:绘制计数器,(特殊:服务器接收到参数后,需要返回到前台)

1.在前台开启服务器模式

2.在后台接受前台传递过来的参数

public Map<String,Object> search145(UserInfo UserInfo,int length,int draw,int start)

3.在后台通过Hibernate查询结果

public Map<String,Object> search145(UserInfo userInfo,int length,int draw,int start){

        List<UserInfo> list=new ArrayList<UserInfo>();

    Map<String,Object> map=new HashMap<String, Object>();
int totalCount=0;
Session session=null;
String hql="from Airline145Info where 1=1";
    try{
session=HibUtil.getSession();//创建Session对象
Query querySelect=session.createQuery(hql);//通过调用Session对象创建Query的对象
totalCount=querySelect.list().size();//得到要查询的总记录条数,
querySelect.setFirstResult(start);//将数据的起始位置加入到Query对象中
querySelect.setMaxResults(length);//将每页显示的数据条数添加到Query对象中
list=querySelect.list();//这个时候数据的条数已经改变了。为要每页显示的数据条数
}catch(Exception e){
e.printStackTrace();
}finally {
closeSession(session);
}
map.put("draw",draw);//返回到前台
map.put("data",list);//分过页的查询结果
map.put("recordsTotal",totalCount);//查询到的数据中条数
map.put("recordsFiltered",totalCount);//有过滤条件,过滤后的数据总条数
return map;
}//标红为重点注意的地方
第一次返回的数据格式为
{
“draw":1,
"recordsTotal":5,//假设5条数据
”recordsFiltered":5,
"data":[{
name:join,
nameCode:003
},
{
name:jory,
nameCode:004
},


{
name:tom,
nameCode:005
},


{
name:cali,
nameCode:006
},


{
name:mary,
nameCode:007
}
]
}

猜你喜欢

转载自www.cnblogs.com/baijingting/p/9465751.html
今日推荐