• 利用反射自动封装成实体对象


    利用此方法的时候需要传递的参数的名称,必须以行号结尾,去掉行号就是属性名称,比如页面传递name+rowNo,那么实体对象的属性名应该为name。代码如下

    //获取页面数据,自动封装成bean对象
    	public List getObjectList(Class clazz,String[] rowNos) throws Exception{
    		List objList = new ArrayList();
    		for(int i=0;rowNos!=null && i<rowNos.length;i++){
    			//创建对象实例
    			Object object = clazz.newInstance();
    			//获取类声明的属性
    			Field[] fields = clazz.getDeclaredFields();
    			
    			StringBuffer buffer = null;
    			//遍历属性,执行封装
    			for(int j=0;j<fields.length;j++){
    				//获取属性的名字
    				String fieldName = fields[j].getName();
    				//得到参数的名字
    				String paraName = fields[j].getName()+rowNos[i];
    				
    				//如果获取参数值为空则继续循环
    				String value = getValueNull(paraName);
    				if(value==null){
    					continue;
    				}
    				
    		        //参数值
    				Object[] paramValue =new Object[1];
    				if(fields[j].getType().toString().equals("class java.lang.String")){
    					paramValue[0]=value;
    				}
    				if(fields[j].getType().toString().equals("class java.lang.Integer")){
    					paramValue[0]=new Integer(value);
    				}
    				if(fields[j].getType().toString().equals("class java.lang.Double")){
    					paramValue[0]=new Double(value);
    				}
    				if(fields[j].getType().toString().equals("class java.util.Date")){
    					SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    					paramValue[0]=sdf.parse(value);
    				}
    				
    				//参数类型
    				Class[] paramType= {fields[j].getType()}; 
    				
    				//得到set方法的名字
    				buffer = new StringBuffer("set");
    		        buffer.append(fieldName.substring(0, 1).toUpperCase());  
    		        buffer.append(fieldName.substring(1)); 
    		        //获取放回
    		        Method method = clazz.getDeclaredMethod(buffer.toString(), paramType); 
    		        //执行方法
    		        method.invoke(object,paramValue);
    			}
    			//将当前对象放到list中
    			objList.add(object);
    		}
    		return objList;
    	}
    
  • 相关阅读:
    使用Redis做MyBatis的二级缓存
    MySQL 类型转换
    mysql store procedure 存储过程
    swagger
    redis 持久化
    redis 发布/订阅 模式
    dfs模板
    二叉树
    拓扑排序
    最大公因数(辗转相除法)
  • 原文地址:https://www.cnblogs.com/lvxiaowei/p/4227746.html
Copyright © 2020-2023  润新知