`

jquery datatables 插件 后台代码

    博客分类:
  • html
 
阅读更多
package page;

import java.util.Map;

public class Column {
	private Object data;
	private Object name;
	private Object searchable;
	private Object orderable;
	private Map<String,Object> search;
	public Object getData() {
		return data;
	}
	public void setData(Object data) {
		this.data = data;
	}
	public Object getName() {
		return name;
	}
	public void setName(Object name) {
		this.name = name;
	}
	public Object getSearchable() {
		return searchable;
	}
	public void setSearchable(Object searchable) {
		this.searchable = searchable;
	}
	public Object getOrderable() {
		return orderable;
	}
	public void setOrderable(Object orderable) {
		this.orderable = orderable;
	}
	public Map<String, Object> getSearch() {
		return search;
	}
	public void setSearch(Map<String, Object> search) {
		this.search = search;
	}
	
	
}

  

PageCondition.java

package page;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class PageCondition {
	private final String[] rules={"draw","start","length","search","order","columns"};
	private JSONObject jsonObj;
	
	public PageCondition(JSONObject jsonObj){
		this.jsonObj=jsonObj;
	}
	public int draw(){
		if(containKey("draw")){
			return getInt("draw");
		}
		throw new IllegalArgumentException("没有order");
	}
	
	
	public int start(){
		if(containKey("start")){
			return getInt("start");
		}
		throw new IllegalArgumentException("没有start");
	}
	
	public int length(){
		if(containKey("length")){
			return getInt("length");
		}
		throw new IllegalArgumentException("没有length");
	}
	
	public Map<String,String> search(){
		if(containKey("search")){
			return getMap("search");
		}
		throw new IllegalArgumentException("没有search");
	}
	
	
	public List<Map<String,String>> order(){
		List<Map<String,String>> list=new ArrayList<Map<String,String>>();
		if(containKey("order")){
			JSONArray jsonArray=jsonObj.getJSONArray("order");
			for(int i=0;i<jsonArray.size();i++){
				JSONObject dataObject=jsonArray.getJSONObject(i);
				list.add(getMap(dataObject));
			}
			return list;
		}
		throw new IllegalArgumentException("没有order");
	}
	
	public List<Column> columns(){
		List<Column> list=new ArrayList<Column>();
		if(containKey("columns")){
			JSONArray jsonArray=jsonObj.getJSONArray("columns");
			for(int i=0;i<jsonArray.size();i++){
				JSONObject dataObject=jsonArray.getJSONObject(i);
				Column columnData=(Column)JSONObject.toBean(dataObject,Column.class);
				list.add(columnData);
			}
			return list;
		}
		throw new IllegalArgumentException("没有columns");
	}
	
	public Map<String,String> outSearch(){
		Set<String> keys=jsonObj.keySet();
		Set<String> keyCopy=new HashSet<String>();
		keyCopy.addAll(keys);
		keyCopy.removeAll(Arrays.asList(rules));
		Iterator<String> i=keyCopy.iterator();
		Map<String,String> hashMap=new HashMap<String,String>();
		while(i.hasNext()){
			String key=i.next();
			String value=jsonObj.getString(key);
			hashMap.put(key, value);
		}
		return hashMap;
	}
	
	public boolean serverSide(){
		if(jsonObj.isEmpty())
			return false;
		return true;
	}
	//////////////////////
	private int getInt(String target){
		return jsonObj.getInt(target);
	}
	
	private Map<String,String> getMap(String target){
		JSONObject jsonMap=jsonObj.getJSONObject(target);
		return getMap(jsonMap);
	}
	private Map<String,String> getMap(JSONObject jsonMap){
		Map<String,String> map=new HashMap<String,String>();
		Iterator<String> iterator=jsonMap.keys();
		while(iterator.hasNext()){
			String key=iterator.next();
			String value=jsonMap.getString(key);
			map.put(key, value);
		}
		return map;
	}
	
	
	private boolean containKey(Object key){
		if(jsonObj.containsKey(key)){
			return true;
		}
		return false;
	}
}

 PageFilter.java

 

package page;

import java.util.Map;

public interface PageFilter {
	public String execute(String hsql,Map<String,String> parameters,PageCondition condition);
}

 

PageResult.java

 

package page;

import java.util.List;

public class PageResult<T> {
	public int draw;
	public int recordsTotal;
	public int recordsFiltered;
	public List<T> data;
	public int getDraw() {
		return draw;
	}
	public void setDraw(int draw) {
		this.draw = draw;
	}
	public int getRecordsTotal() {
		return recordsTotal;
	}
	public void setRecordsTotal(int recordsTotal) {
		this.recordsTotal = recordsTotal;
	}
	public int getRecordsFiltered() {
		return recordsFiltered;
	}
	public void setRecordsFiltered(int recordsFiltered) {
		this.recordsFiltered = recordsFiltered;
	}
	public List<T> getData() {
		return data;
	}
	public void setData(List<T> data) {
		this.data = data;
	}
	
}

 XXXController.java controller层 使用 springmvc

package page;

import net.sf.json.JSONObject;

public class XXXController {
	@RequestMapping(value="/XXXXXXX")
	@ResponseBody
	public PageResult<RtnClass> doRequest(@RequestBody JSONObject jsonObj){
		PageCondition condition=new PageCondition(jsonObj);
		PageResult<RtnClass> result=XXXservice.doService(condition);
	}
}

 XXXService.java service层代码

package page;

import java.util.Map;

import net.sf.json.JSONObject;

public class XXXService {
	public void doService(PageCondition condition){
		String hsql="select t from RtnClass t where 1=1 ";
		String hsqlCount="select count(*) from RtnClass t where 1=1";
		PageFilter filter=new PageFilter(){

			@Override
			public String execute(String hsql, Map<String, String> parameters,
					PageCondition condition) {
				if(StringUtils.hasText(parameters.get("param"))){
					hsql+=" and t.param = "+parameters.get("param");
				}
				
				return hsql;
			}
		};
		
	}
}

 XXXDao.java dao层代码 用的是hibernate

package page;

import java.util.List;
import java.util.Map;

import javax.management.Query;

import org.apache.commons.lang.StringUtils;

public class XXXDao {
	public int queryRecordsTotal(String hsql,PageCondition condition){
		Query query=getSession().createQuery(hsql);
		return ((Number)query.uniqueResult()).intValue();
	}
	public int queryRecordsFiltered(String hsql,PageCondition condition,PageFilter filter){
		Map<String,String> parameters=condition.outSearch();
		hsql=filter.execute(hsql, parameters, condition);
		Query query=getSession().createQuery(hsql);
		return ((Number)query.uniqueResult()).intValue();
	}
	public <T> List<T> queryPage(String hsql,PageCondition condition){
		Query query=getSession().createQuery(hsql);
		int start=condition.start();
		int length=condition.length();
		query.setFisrtResult(start);
		query.setMaxResults(length);
		return query.list();
	}
	public <T> PageResult<T> queryForPage(String hsql,String hsqlCount,PageCondition condition,PageFilter filter){
		PageResult<T> result=new PageResult<T>();
		result.setDraw(condition.draw());
		int recordsTotal=queryRecordsTotal(hsqlCount,condition);
		int recordsFiltered=queryRecordsFiltered(hsqlCount,condition,filter);
		result.setRecordsTotal(recordsTotal);
		result.setRecordsFiltered(recordsFiltered);
		
		//filter
		Map<String,String> parameters=condition.outSearch();
		hsql=filter.execute(hsqlCount, parameters, condition);
		
		//order 
		StringBuilder orderSb=new StringBuilder(" order by");
		List<Map<String,String>> order=condition.order();
		for(Map<String,String> orderMap:order){
			String column=orderMap.get("column");
			String dir=orderMap.get("dir");
			int columnNum=Integer.parseInt(column);
			String name=condition.columns().get(columnNum).getName().toString();
			if(StringUtils.isNotEmpty(name)){
				orderSb.append(" "+name+" "+dir+" , " );
			}
		}
		String orderStr=orderSb.toString();
		if(orderStr.equals(" order by")){
			orderStr="";
		}else{
			orderStr=orderStr.substring(0,orderStr.lastIndexOf(","));
		}
		hsql+=orderStr;
		
		//page
		List<T> data=queryPage(hsql,condition);
		result.setData(data);
		
		return result;
	}
}

 jsonobjct jar包可以在附件中下载,代码仅供参考

分享到:
评论

相关推荐

    22-08-19-064_JsonTable(Nop后台重构定义Jquery DataTables)

    通过nopCommerce后台类方法,对Jquery DataTables插件的重构定义实现表的无刷新查询、删除、添加和编辑等操作

    jQuery表格插件datatables用法详解

    一、Datatables简介 DataTables是一个jQuery的...在做后台的时候并没有美工和前端工程师来配合你做页面,为了显示数据并有一定的美感,我们可以使用jQuery的DataTables插件来帮助我们完成任务 1、DataTables的默认配置

    基于Bootstrap+php+jquery酒店预订系统后台管理系统

    jquery表格插件Datatables的使用大大丰富了数据的展现方式,更具交互性。具有自动分页、模糊搜索等功能 封装了Response类,可以传递4个参数 show($code, $message = '', $data = array(), $type = self::JSON)来展示...

    Bootstrap ACE后台管理界面模板(扁平化)

    网页图标全采用FontAwesome,除Bootstrap,jQuery UI使用到的第三方插件有: jQuery 2.0.3 jQuery UI 1.10.3 (Custom Build) Twitter Bootstrap 3.0.0 FontAwesome 3.2.1 Google "Open Sans" Font jQuery Flot ...

    DataTables自行封装请求参数和返回数据的零耦合服务端分页示例(PHP&JAVA)

    使用方法: 支持JAVA和PHP两种后台。...分页栏增加跳页功能(直接修改了dataTables.bootstrap.js和dataTables.bootstrap.css) CSS实现单元格超长文字省略号显示 CSS实现单元格连续纯字母数字强制换行显示

    ACE Admin官方文档(最新)

    网页图标全采用FontAwesome,除Bootstrap,jQuery UI使用到的第三方插件有: jQuery 2.0.3 jQuery UI 1.10.3 (Custom Build) Twitter Bootstrap 3.0.0 FontAwesome 3.2.1 Google "Open Sans" Font jQuery Flot ...

    php酒店预订系统后台管理系统

    jquery表格插件Datatables的使用大大丰富了数据的展现方式,更具交互性。具有自动分页、模糊搜索等功能 封装了Response类,可以传递4个参数 show($code, $message = '', $data = array(), $type = self::JSON)来展示...

    利用ASP.NET MVC和Bootstrap快速搭建个人博客之后台dataTable数据列表

    jQuery dataTables 插件是一个优秀的表格插件,是后台工程师的福音!它提供了针对数据表格的排序、浏览器分页、服务器分页、查询、格式化等功能。dataTables 官网也提供了大量的演示和详细的文档进行说明,为了方便...

    DataTables自行封装请求参数和返回数据的零耦合服务端分页示例

    使用DataTable默认的ajax交互功能,对传给后台和从后台获取的数据都有命名格式要求,这样一来耦合度较高,不利于后期扩展,不能...分页栏增加跳页功能(直接修改了dataTables.bootstrap.js和dataTables.bootstrap.css)

    【毕业设计】基于PHP的酒店预订系统后台管理系统【后端源码+sql】.zip

    jquery表格插件Datatables的使用大大丰富了数据的展现方式,更具交互性。具有自动分页、模糊搜索等功能 封装了Response类,可以传递4个参数 show($code, $message = '', $data = array(), $type = self::JSON)来展示...

    php酒店预订系统后台管理系统.zip

    jquery表格插件Datatables的使用大大丰富了数据的展现方式,更具交互性。具有自动分页、模糊搜索等功能 封装了Response类,可以传递4个参数 show($code, $message = '', $data = array(), $type = self::JSON)来展示...

    蓝色OA管理页面模板,用于前后端交互

    ├── jquery.contextmenu 右键菜单插件 ├── ueditor 百度编辑器 ├── Highcharts 图表插件 ├── echarts 百度图标插件 ├── datatables 表格排序,检索插件 ├── WebUploader 百度文件上传组件 ├── ...

    H-ui.admin

    ├── jquery.validation 表单验证插件 ├── My97DatePicker 日期插件 ├── datatables 表格插件 ├── nprogress 进度条插件 ├── layer layer弹出层插件 ├── laypage laypage 翻页插件 ├── jquery....

    Myadmin-template:自己搭建的admin后台管理系统视图界面(包含boostrap版本,Iview element,h-ui)各一套

    其他可以根据自己口味选择自己的login视图)Datatables是一款jquery表格插件。它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能。分页,即时搜索和排序/{使用者必须知道Datatables怎么使用}login视图...

    H-ui.admin_v2.3.1

    │ dataTables 表格排序,检索插件 │ WebUploader 百度文件上传组件 │ lightbox2 图片预览组件 │ │ html5.js html5插件,让低版本IE支持html5元素 │ DD_belatedPNG_0.0.8a-min.js 解决IE6png透明 │ ...

    H-ui.admin 前端框架

    │ dataTables 表格排序,检索插件 │ WebUploader 百度文件上传组件 │ lightbox2 图片预览组件 │ │ html5.js html5插件,让低版本IE支持html5元素 │ DD_belatedPNG_0.0.8a-min.js 解决IE6png透明 ...

    Bootstrap4 UI 后台模板

    Bootstrap4 支持,含有超过50个模板页面,使用插件包括: Bootstrap https://getbootstrap.com/ animate.css http://daneden.me/animate Bootstrap Tagsinput ...

    一个简单的在线考试系统

    后台 试卷管理(增、删、改、查) 题库管理(增、删、改、查) 成绩查看(查) 用户查看(查) 前台 选择试题 考试界面(考试完出成绩,考试完查看答案)。 查看成绩 #技术选择 软件架构 后端 Spring Spring MVC MyBatis...

Global site tag (gtag.js) - Google Analytics