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包可以在附件中下载,代码仅供参考
相关推荐
通过nopCommerce后台类方法,对Jquery DataTables插件的重构定义实现表的无刷新查询、删除、添加和编辑等操作
一、Datatables简介 DataTables是一个jQuery的...在做后台的时候并没有美工和前端工程师来配合你做页面,为了显示数据并有一定的美感,我们可以使用jQuery的DataTables插件来帮助我们完成任务 1、DataTables的默认配置
jquery表格插件Datatables的使用大大丰富了数据的展现方式,更具交互性。具有自动分页、模糊搜索等功能 封装了Response类,可以传递4个参数 show($code, $message = '', $data = array(), $type = self::JSON)来展示...
网页图标全采用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 ...
使用方法: 支持JAVA和PHP两种后台。...分页栏增加跳页功能(直接修改了dataTables.bootstrap.js和dataTables.bootstrap.css) CSS实现单元格超长文字省略号显示 CSS实现单元格连续纯字母数字强制换行显示
网页图标全采用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 ...
jquery表格插件Datatables的使用大大丰富了数据的展现方式,更具交互性。具有自动分页、模糊搜索等功能 封装了Response类,可以传递4个参数 show($code, $message = '', $data = array(), $type = self::JSON)来展示...
jQuery dataTables 插件是一个优秀的表格插件,是后台工程师的福音!它提供了针对数据表格的排序、浏览器分页、服务器分页、查询、格式化等功能。dataTables 官网也提供了大量的演示和详细的文档进行说明,为了方便...
使用DataTable默认的ajax交互功能,对传给后台和从后台获取的数据都有命名格式要求,这样一来耦合度较高,不利于后期扩展,不能...分页栏增加跳页功能(直接修改了dataTables.bootstrap.js和dataTables.bootstrap.css)
jquery表格插件Datatables的使用大大丰富了数据的展现方式,更具交互性。具有自动分页、模糊搜索等功能 封装了Response类,可以传递4个参数 show($code, $message = '', $data = array(), $type = self::JSON)来展示...
jquery表格插件Datatables的使用大大丰富了数据的展现方式,更具交互性。具有自动分页、模糊搜索等功能 封装了Response类,可以传递4个参数 show($code, $message = '', $data = array(), $type = self::JSON)来展示...
├── jquery.contextmenu 右键菜单插件 ├── ueditor 百度编辑器 ├── Highcharts 图表插件 ├── echarts 百度图标插件 ├── datatables 表格排序,检索插件 ├── WebUploader 百度文件上传组件 ├── ...
├── jquery.validation 表单验证插件 ├── My97DatePicker 日期插件 ├── datatables 表格插件 ├── nprogress 进度条插件 ├── layer layer弹出层插件 ├── laypage laypage 翻页插件 ├── jquery....
其他可以根据自己口味选择自己的login视图)Datatables是一款jquery表格插件。它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能。分页,即时搜索和排序/{使用者必须知道Datatables怎么使用}login视图...
│ dataTables 表格排序,检索插件 │ WebUploader 百度文件上传组件 │ lightbox2 图片预览组件 │ │ html5.js html5插件,让低版本IE支持html5元素 │ DD_belatedPNG_0.0.8a-min.js 解决IE6png透明 │ ...
│ dataTables 表格排序,检索插件 │ WebUploader 百度文件上传组件 │ lightbox2 图片预览组件 │ │ html5.js html5插件,让低版本IE支持html5元素 │ DD_belatedPNG_0.0.8a-min.js 解决IE6png透明 ...
Bootstrap4 支持,含有超过50个模板页面,使用插件包括: Bootstrap https://getbootstrap.com/ animate.css http://daneden.me/animate Bootstrap Tagsinput ...
后台 试卷管理(增、删、改、查) 题库管理(增、删、改、查) 成绩查看(查) 用户查看(查) 前台 选择试题 考试界面(考试完出成绩,考试完查看答案)。 查看成绩 #技术选择 软件架构 后端 Spring Spring MVC MyBatis...