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


    利用此方法的时候需要传递的参数的名称,必须以行号结尾,去掉行号就是属性名称,比如页面传递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;
    	}
    
  • 相关阅读:
    wtforms
    day 036 线程 -创建,守护线程
    day 035 管道 和数据共享
    day034 锁,信号量,事件,队列,子进程与子进程通信,生产者消费者模型,joinableQueue
    day33 创建进程的方法和相关操作
    day 32并行 并发
    day 31 socketserver 和ftp打印进度条
    day 029 缓冲区和粘包 day 30 粘包的解决
    相关英语简称
    【实战】初识ListView及提高效率
  • 原文地址:https://www.cnblogs.com/lvxiaowei/p/4227746.html
Copyright © 2020-2023  润新知