`
suhongliang5332
  • 浏览: 24321 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

JqGrid的Java模板类

 
阅读更多

这段时间一直在使用Spring+JqGrid+Mybatis在做开发,写了一个模板类,和大家分享下

第一个是Mybatis的sql例子,红色字体不要修改,放那就行

<!-- 查询全部的Code信息,支持检索和分页 -->
	<select id="codeDtlMasterList" parameterType="CodeDtlVo" resultType="HashMap">
		<choose>
			<when test="docount == 1 ">
			select to_char(count(*)) AS RECORDS 
			  from (
			</when> 
		</choose> 
		<choose>
			<when test="dopage == 1 ">
			SELECT * FROM  (
				SELECT E.*,
				 	   ROWNUM PAGE
			      FROM (
			</when> 
		</choose>         
			select CM.MAST_CODE_ID,CMT.DESCRIPTION,
			        CM.CODE_LENGTH
			  from OPM_CODE_MASTER CM,
			       OPM_CODE_MASTER_TR CMT
			 where 1=1
			   and CM.USAGE = 'Y'
			   and CM.MAST_CODE_ID = CMT.MAST_CODE_ID
			   and CMT.LANG_GB = #{lang}
			 order by ${sidx} ${sord}
		<choose>
			<when test="docount == 1">	   
			) e 
			</when> 
		</choose> 
		<choose>
			<when test="dopage == 1 ">
			) e)WHERE PAGE &gt; #{numPageStart}
			   AND PAGE &lt;= #{numPageEnd} 
			</when> 
		</choose>  
	</select>

 
第二个是VO

CodeDtlVo:
public class CodeDtlVo extends LangVo{ 
private String mast_code_id=&quot;&quot;; 
} 

LangVo: 
public class LangVo extends JqGridComDataVo implements LangVoIdentify{ 
private String soLange=&quot;&quot;;//源语言类型 
private String toLange=&quot;&quot;;//目标语言类型 
} 
lang标识接口 
public interface LangVoIdentify extends JqGridVoIdentify{ 

} 
JqGrid抽象公共父类,放入了公共参数 
public abstract class JqGridComDataVo extends JqGridVo{ 
private String lang; 
} 
JqGrid 抽象父类 
public abstract class JqGridVo implements JqGridVoIdentify{ 
//前端必传 
private String rows; //每页显示的行数 
private String page; //当前页数 
private String sidx; //排序的字段 
private String sord; //排序的方式 
//前端选传 
private String oper; //操作类型 
//系统自动 
private String docount; //是否查询全部 
private String dopage; //是否查询分页 
//操作标识位 
private String stateFlag=&quot;&quot;; 
private Integer numPageStart; 
private Integer numPageEnd; 
} 
JqGriddVo标识接口 
public interface JqGridVoIdentify { 

} 

Dao标识接口

public interface JqGridDaoIdentify {
}

 
第三个是service

package egovframework.rte.cmmn.jqgrid.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.springframework.stereotype.Service;

import egovframework.rte.cmmn.jqgrid.intface.JqGridDaoIdentify;
import egovframework.rte.cmmn.jqgrid.intface.JqGridVoIdentify;

/**
 * Jq公共类,自动封装成JqGrid数据
 */
@Service("jqGridService")
public class JqGridService {
	/**
	 * @param jqGridVo
	 * @return
	 */
	public HashMap<String,Object> jqGridList(JqGridDaoIdentify jqGridDao,String methodName,JqGridVoIdentify jqGridVo,List<String> lstr,boolean noPage) {
		HashMap<String,Object> resultHashMap = new HashMap<String, Object>();
		String page = "1";
		String rows = "0";
		String records = "0";
		try{
			//查询总条数
			this.setFieldValueByName("docount", jqGridVo, "1");
			this.setFieldValueByName("dopage", jqGridVo, "0");	
			List<HashMap<String, String>> jqGridListTotal = this.executeMethod(jqGridDao, methodName, jqGridVo);//获得数量结果集
			
			//查询分页数据
			this.setFieldValueByName("docount", jqGridVo, "0");
			if(noPage){
				this.setFieldValueByName("dopage", jqGridVo, "0");
			}else{
				this.setFieldValueByName("dopage", jqGridVo, "1");
				page = this.getFieldValueByName("page", jqGridVo).toString();
				rows = this.getFieldValueByName("rows", jqGridVo).toString();
				this.setFieldValueByName("numPageStart", jqGridVo, (Integer.parseInt(page)-1) * Integer.parseInt(rows));
				this.setFieldValueByName("numPageEnd", jqGridVo, (Integer.parseInt(page)) * Integer.parseInt(rows));
			}
			List<HashMap<String, String>> jqGridListPage = this.executeMethod(jqGridDao, methodName, jqGridVo);
			//存入数据
			List<HashMap<String, Object>> rowsData = new ArrayList<HashMap<String,Object>>();
			if(lstr.size()>0){
				for (HashMap<String, String> jqGridItem : jqGridListPage) {
					//自动把第一个值存入主键,前台必须和它对应key:true
					HashMap<String, Object> rowsDataItem = new HashMap<String, Object>();
					rowsDataItem.put(lstr.get(0).toLowerCase(), jqGridItem.get(lstr.get(0).toUpperCase()));
					HashMap<String, Object> cellData = new HashMap<String, Object>();
					for (String item : lstr) {
						cellData.put(item.toLowerCase(), jqGridItem.get(item.toUpperCase()));
					}
					rowsDataItem.put("cell", cellData);
					rowsData.add(rowsDataItem);
				}
			}
			//生成前台json数据
			records = jqGridListTotal.get(0).get("RECORDS");
			resultHashMap.put("records", records);//总记录数
			resultHashMap.put("page", page);//当前页数
			resultHashMap.put("total", Math.ceil(Double.parseDouble(records) / Integer.parseInt(rows)));
			resultHashMap.put("rows", rowsData);
			return resultHashMap;
		} catch (Exception e)    
		{         
			e.printStackTrace();
			return null;       
		}  
	}
	public HashMap<String,Object> jqGridList(JqGridDaoIdentify jqGridDao,String methodName,JqGridVoIdentify jqGridVo,List<String> lstr) {
		return this.jqGridList(jqGridDao,methodName,jqGridVo,lstr,false);
	}
	private List<HashMap<String, String>> executeMethod(JqGridDaoIdentify jqGridDao,String methodName,JqGridVoIdentify jqGridVo){
		try{
			Class<?>[] d = jqGridDao.getClass().getInterfaces();
			java.lang.reflect.Method  method =  d[0].getMethod(methodName, jqGridVo.getClass());
			Object value = method.invoke(jqGridDao,jqGridVo);
			@SuppressWarnings("unchecked")
			List<HashMap<String, String>> tmpResult = (List<HashMap<String, String>>)value;
			return tmpResult;
		} catch (Exception e)    
		{         
			e.printStackTrace();
			return null;       
		} 
	}
	/**
	 * @param fieldName
	 * @param obj
	 * @return
	 * 获得VO的值
	 */
	private Object getFieldValueByName(String fieldName, Object obj){
		try{       
			String firstLetter = fieldName.substring(0, 1).toUpperCase();       
			String getter = "get" + firstLetter + fieldName.substring(1);       
			java.lang.reflect.Method  method = obj.getClass().getMethod(getter, new Class[] {});       
			Object value = method.invoke(obj, new Object[] {});       
			return value;       
		} catch (Exception e)    
		{   
			e.printStackTrace();
			return null;       
		}    
	}
	/**
	 * @param fieldName
	 * @param obj
	 * @param value
	 * 设置VO的值
	 */
	private void setFieldValueByName(String fieldName, Object obj,Object value){
		try{       
			String firstLetter = fieldName.substring(0, 1).toUpperCase();       
			String setter = "set" + firstLetter + fieldName.substring(1);       
			java.lang.reflect.Method  method = obj.getClass().getMethod(setter, value.getClass());       
			method.invoke(obj, value);       
		} catch (Exception e)    
		{          
			e.printStackTrace();
		}    
	}
}

 

第四个是使用

  自己的VO,必须继承自JqGridVo,或者实现JqGridVoIdentify这个接口

  自己的DaoIntface 必须继承自JqGridDaoIdentify

 

引用服务
   //JqGrid服务
   @Resource(name="jqGridService")
    private JqGridService jqGridService;
  Param构造:
  List<String> Param = new ArrayList<String>();
  
  Param.add("MAST_CODE_ID");
  //默认第一个为KEY
  Param.add("STATEFLAG");
  
  Param.add("DISLPAY_ORDER");
  
  Param.add("CODE_CLASS");
  

 调用(自己的DaoIntface,要调用DaoIntface的方法,vo参数,Key参数,是否使用分页)
 jqGridService.jqGridList(codeMasterDaoIntface,"codeMasterList",codeMasterVo,Param,true);

 

分享到:
评论

相关推荐

    jquery、jqGrid

    此外,jqGrid还支持自定义列模板,允许开发者根据需求调整列的显示样式和内容。 **使用jQuery和jqGrid的主要步骤:** 1. **引入依赖**:首先在HTML页面中引入jQuery库和jqGrid的JavaScript及CSS文件,通常从CDN或...

    ssh+jqgrid的整合

    2. **创建Action**:在Struts2中,你需要创建一个Action类,该类将负责处理来自JQGrid的请求。这些请求通常包含对数据进行增删改查的操作。Action类需要继承自Struts2的ActionSupport,并实现相应的业务逻辑方法。 ...

    Spring+JPA+jqGrid Maven Archetype

    **Spring+JPA+jqGrid Maven Archetype** 是一个基于Maven构建的项目模板,用于快速搭建使用Spring框架、Java Persistence API (JPA) 和jqGrid的Web应用程序。这个模板可以帮助开发者快速启动一个新的项目,无需从零...

    MF00716-Java企业级开发平台源码.zip

    任务调度:Spring Task、持久层框架:beetlsql、模板引擎:beetl 数据库连接池:Alibaba Druid、缓存框架:Ehcache、日志管理:SLF4J、LOGBACKUP 工具类:Apache Commons、FastJson、EASYPOI、BladeToolBox 2、...

    java企业级开发平台源码 权限管理框架源码数据库 MySQL源码类型 WebForm

    Java企业级开发平台源码 权限管理框架源码 基于Spring+SpringMVC+Beetl+Beetlsql+Shiro的权限管理框架 内置功能:用户管理、角色管理、菜单管理、字典管理、部门管理 附件管理、参数管理、连接池监视、日志管理、...

    移动护理springMVC+maven+oracle

    JdbcTemplate是Spring提供的一个简单JDBC模板类,它封装了JDBC的基本操作,减少了手动处理SQL和结果集的工作量,提高了代码的可读性和可维护性。 **ZTree** ZTree是一款基于jQuery的灵活的树形插件,常用于展示层次...

    基于springboot+mybatis+redis+es+bootstrap的搜索实战项目

    src/main/java com.baizh.xxx .util 工具包 .entity 实体类 .dao dao包 .service 业务包 .controller 控制器 .elasticsearch.dao esDAO接口包 .config 项目...

    SSH2框架整合 增删改查以及分页 适合初学者

    SSH2框架整合是Java开发中常见的一种技术组合,主要由Spring、Struts2和Hibernate三个开源框架构成。这个教程主题“SSH2框架整合 增删改查以及分页 适合初学者”旨在帮助初学者理解和掌握如何在实际项目中应用SSH2...

    分布式框架简介SSM组合+ springmvc+mybatis+shiro+restful+bootstrap

    此注解用于将URI模板变量绑定到控制器方法的参数上。例如,在路径`/users/{userId}`中,`{userId}`可以通过`@PathVariable("userId")`的方式绑定到方法参数上。 #### 四、示例代码分析 1. **创建HelloWorld程序** ...

Global site tag (gtag.js) - Google Analytics