`

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包可以在附件中下载,代码仅供参考

分享到:
评论

相关推荐

    jQuery+datatables插件实现ajax加载数据与增删改查功能示例

    1. jQuery+datatables插件实现:这是指使用jQuery结合datatables插件来实现特定的网页表格功能,例如数据的动态加载、分页、排序等。 2. ajax加载数据:涉及通过ajax技术从服务器端动态获取数据,并在网页上实时...

    jquery datatables实例

    然而,jQuery DataTables还支持更多的特性,如自定义列、排序规则、事件处理、插件集成等。你可以根据项目需求,深入学习并定制这些功能。 总的来说,jQuery DataTables通过与后台数据源的交互,提供了高效的数据...

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

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

    Jquery dataTable后台获取数据示例

    1. **引入依赖**: 首先确保项目中已经包含了jQuery、DataTables以及对应的CSS和JS文件,如果使用Struts2,还需要引入Struts2-jQuery插件。 2. **HTML布局**: 创建一个基本的HTML表格,并为其附加DataTables初始化...

    jQuery制作的后台界面

    5. **插件与扩展**:jQuery拥有庞大的插件生态系统,如Bootstrap、Datatables、jQuery UI等,它们为构建后台界面提供了丰富的组件和样式。例如,Bootstrap提供了栅格系统、导航栏、模态框等组件,jQuery UI则包含...

    dataTables java后台解析http请求参数demo

    DataTable是一款功能强大的jQuery插件,常用于实现动态、可排序、可搜索的数据表格。而J2EE(Java 2 Platform, Enterprise Edition)是一个企业级的Java开发框架,用于构建服务器端应用。 首先,我们需要理解...

    jQuery表格插件datatables用法详解

    《jQuery表格插件DataTables深度解析与应用》 DataTables是一个强大的jQuery插件,专为HTML表格设计,它提供了一套全面的交互式控制,包括分页、过滤、排序、自适应宽度、自定义样式、隐藏列等功能。该插件以易用性...

    jquery 图表插件可编辑表格生成走势图jquery 图表统计

    jQuery插件如DataTables或Handsontable提供了这种功能,它们不仅支持表格的排序、过滤和搜索,还允许用户进行单元格级别的编辑。当表格数据发生变化时,这些插件通常会触发相应的事件,开发者可以监听这些事件并更新...

    datatables

    在本文中,我们将深入探讨Datatables的核心特性、如何使用它以及它与其他jQuery表格插件的区别。 1. **核心功能** - **排序**:Datatables允许用户对表格的列进行动态排序,只需单击表头即可,支持多列排序和...

    jquery 后台管理模板

    此外,这个框架可能还包含了jQuery的插件,如数据表格(如Datatables)、下拉菜单(如Select2)、日期选择器(如Bootstrap Datepicker)等,这些都是后台管理中常见的组件,它们提供了丰富的功能和良好的用户体验。...

    jQuery表格插件datatables用法汇总

    使用DataTables插件,可以快速地为网页上的表格数据提供丰富的交互体验,如分页、排序、搜索等,这对于处理大量数据展示尤其有用。随着用户对交互性的需求日益增长,DataTables成为了Web开发者在数据展示方面的强大...

    jquery做的后台界面

    在构建后台界面时,jQuery可以极大地提高开发效率,简化代码,使界面更具交互性和用户友好性。本篇文章将深入探讨如何利用jQuery来创建一个功能丰富的后台界面。 一、jQuery基础 1. 选择器:jQuery的核心在于其...

    jquery 后台界面集合

    同时,jQuery的插件生态系统也非常丰富,如DataTables(数据表格处理)、SweetAlert(提示框)、Datetimepicker(日期时间选择器)等,这些插件能够进一步增强后台界面的功能性。 总结起来,"jQuery 后台界面集合...

    jquery1.3.2后台管理模板

    此外,为了提高代码复用,开发者可能会使用jQuery插件,如DataTables用于表格排序和过滤,Chosen或Select2用于下拉框的美化,Datepicker处理日期选择等。这些插件与jQuery1.3.2无缝集成,极大地扩展了模板的功能。 ...

    SCRUD:使用jQuery,JSON和DataTables插件的SCRUD系统

    "SCRUD:使用jQuery,JSON和DataTables插件的SCRUD系统"这个标题揭示了这是一个基于Web的数据管理系统,它利用了jQuery库进行前端交互,JSON作为数据交换格式,以及DataTables插件来展示和操作数据。SCRUD是"Search...

    Jquery 做的一款OA 后台管理

    这些插件进一步增强了功能,比如Bootstrap Datepicker用于日期选择,DataTables用于表格的排序、过滤和分页。 6. **项目结构**:从提供的文件列表来看,`.classpath`、`.mymetadata`、`.project`和`.settings`是...

    JQUERY插件收集

    **jQuery 插件是开发者们为了扩展 jQuery 功能而创建的独立代码库,它们通常包含特定的功能或组件,使得在 Web 开发中实现各种交互效果、动画、表单验证、数据管理等任务变得更为便捷。这个压缩包集合了我精心整理的...

    jquery-Data tables

    《jQuery DataTables插件深度解析与应用》 jQuery DataTables是一款功能强大的JavaScript库,它能够将HTML表格转化为具有高级功能的数据展示工具。这个插件以其灵活性、可扩展性和丰富的特性深受开发者喜爱,常用于...

    jQuery特效插件

    1. `jquery.blockUI.js`:这是一个阻止页面元素交互的插件,常用于加载提示或者模态对话框,可以防止用户在处理后台操作时进行其他操作,提高用户体验。 2. `jquery.contextmenu.r2.js`:这个插件实现了右键菜单...

Global site tag (gtag.js) - Google Analytics