datatable传参和后台处理

1.html

<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>
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,
"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();
}

$("#serchbtn").click(
function () {
search();
}
);
});
</script>
后台有两种接收方式:
一,,直接接收传递过来的参数
Controller控制器阶段
@RequestMapping(value = "queryTest",method = RequestMethod.POST)
public Map<String,Object> query(@RequestParam(required=false)String name){
Map<String,Object> param=new HashMap<String, Object>();
List<User> list= SearchService.search(name);
int i=list.size();
System.out.println(i);
param.put("draw",1);
param.put("data",list);
param.put("recordsTotal",i);
param.put("recordsFiltered",i);
return param;
}
service阶段
public static  List<User> queryByHql(String name) {

List<User> list=new ArrayList<User>();
String hql="from User where 1=1 [WHERE]";
String where="";
    if(!(StringUtil.isEmpty(name)){
where+=" and name = :name1";
param.put("name1",name);
}
if(where.length()>0){
hql=hql.replace("[WHERE]",where);
}else{
hql=hql.replace("[WHERE]",where);
}
   Session session = null;
try
{
session = getSession();
Query query = session.createQuery(hql);

Iterator iterator = param.keySet().iterator();
while(iterator.hasNext()) {
String key = iterator.next().toString();
Object value = param.get(key);
//String[]
if(value != null && "[Ljava.lang.String;".equals(value.getClass().getName())) {
query.setParameterList(key, (String[])value);
}
else {
query.setParameter(key, value);
}
}
list=query.list();
}
catch (Exception ex) {
logger.error(ex.toString());
logger.error("hql: {}", hql);
ex.printStackTrace();
}
finally {
closeSession(session);
}
return list;
}
这是参数处理的第一种方式,将参数直接传递到后台后台也直接处理参数,但是缺点是当参数过多时传递的参数多造成代码的雍余,这时引入第二种接受参数的方式,以一个对象接收参数
第二种处理参数的方式
Controller控制器阶段
@RequestMapping(value = "queryTest",method = RequestMethod.POST)
public Map<String,Object> query(User user){
Map<String,Object> param=new HashMap<String, Object>();
List<User> list= SearchService.search(user);
int i=list.size();
System.out.println(i);
param.put("draw",1);
param.put("data",list);
param.put("recordsTotal",i);
param.put("recordsFiltered",i);
return param;
}
service阶段
public static  List<User> queryByHql(User user) {

List<User> list=new ArrayList<User>();
String hql="from User where 1=1 [WHERE]";
String where="";
    if(!(StringUtil.isEmpty(user.getName())){
where+=" and name = :name";
param.put("name",user.getName);
}
if(where.length()>0){
hql=hql.replace("[WHERE]",where);
}else{
hql=hql.replace("[WHERE]",where);
}
   Session session = null;
try
{
session = getSession();
Query query = session.createQuery(hql);

Iterator iterator = param.keySet().iterator();
while(iterator.hasNext()) {
String key = iterator.next().toString();
Object value = param.get(key);
//String[]
if(value != null && "[Ljava.lang.String;".equals(value.getClass().getName())) {
query.setParameterList(key, (String[])value);
}
else {
query.setParameter(key, value);
}
}
list=query.list();
}
catch (Exception ex) {
logger.error(ex.toString());
logger.error("hql: {}", hql);
ex.printStackTrace();
}
finally {
closeSession(session);
}
return list;
}


posted @ 2018-08-12 21:05  白鬼为魄  阅读(4256)  评论(0编辑  收藏  举报