`
xiegangthrille
  • 浏览: 92121 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java反射利用赋值、取值操作

    博客分类:
  • java
阅读更多
@SuppressWarnings("unchecked")
//数据插入操作
	public boolean insertData(Object obj) throws Exception {
		boolean result=false;
		if(obj!=null){
			Class cla=obj.getClass();
			String tableName=cla.getSimpleName();
			StringBuffer sql=new StringBuffer();
			ArrayList list=new ArrayList();
			sql.append("insert into ");
			sql.append(tableName+"(");
			Field[] fieldArray=cla.getDeclaredFields();
			for(int i=0;i<fieldArray.length;i++){
				ArrayList listChild=new ArrayList();
				String fieldName=fieldArray[i].getName();
				sql.append(fieldName+",");
				String newfieldName=fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);
				Method meth=cla.getDeclaredMethod("get"+newfieldName);
				
				listChild.add(i+1);
				listChild.add(fieldName);
				listChild.add(meth.invoke(obj));
				listChild.add(meth.getReturnType().getSimpleName());
				list.add(listChild);
			}
			sql.deleteCharAt(sql.lastIndexOf(","));
			sql.append(") values(");
			for(int i=0;i<fieldArray.length;i++){
				sql.append("?,");
			}
			sql.deleteCharAt(sql.lastIndexOf(","));
			sql.append(")");
			int resultNum=connection.executeUpdate(sql.toString(), list);
			if(resultNum>0){
				result=true;
			}
		}
		return result;
	}
@SuppressWarnings("unchecked")
//数据更新操作
	public boolean updateData(Object obj) throws Exception {
		boolean result=false;
		if(obj!=null){
			Class cla=obj.getClass();
			String tableName=cla.getSimpleName();
			StringBuffer sql=new StringBuffer();
			ArrayList list=new ArrayList();
			ArrayList listByID=new ArrayList();
			String fieldID="";
			Object fieldIDvalue="";
			String fieldIDType="";
			sql.append("update ");
			sql.append(tableName);
			sql.append(" set ");
			Field[] fieldArray=cla.getDeclaredFields();
			for(int i=0;i<fieldArray.length;i++){
				ArrayList listChild=new ArrayList();
				String fieldName=fieldArray[i].getName();
				String newfieldName=fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);
				Method meth=cla.getDeclaredMethod("get"+newfieldName);
				if(meth.invoke(obj)!=null){
					if(fieldName.lastIndexOf("ID")!=-1){
						fieldID=fieldName;
						fieldIDvalue=meth.invoke(obj);
						fieldIDType=meth.getReturnType().getSimpleName();
					}else{
						sql.append(fieldName+"=?,");
						listChild.add(list.size()+1);
						listChild.add(fieldName);
						listChild.add(meth.invoke(obj));
						listChild.add(meth.getReturnType().getSimpleName());
						list.add(listChild);
					}
				}
			}
			sql.deleteCharAt(sql.lastIndexOf(","));
			sql.append(" where "+fieldID+"=?");
			listByID.add(list.size()+1);
			listByID.add(fieldID);
			listByID.add(fieldIDvalue);
			listByID.add(fieldIDType);
			list.add(listByID);
			System.out.println(sql.toString());
			int resultNum=connection.executeUpdate(sql.toString(), list);
			if(resultNum>0){
				result=true;
			}
			
		}
		return result;
	}

 

@SuppressWarnings("unchecked")
//数据删除操作
	public boolean deleteData(Object obj) throws Exception {
		boolean result=false;
		if(obj!=null){
			Class cla=obj.getClass();
			String tableName=cla.getSimpleName();
			StringBuffer sql=new StringBuffer();
			ArrayList list=new ArrayList();
			ArrayList listByID=new ArrayList();
			String fieldID="";
			Object fieldIDvalue="";
			String fieldIDType="";
			sql.append("delete ");
			sql.append(tableName);
			Field[] fieldArray=cla.getDeclaredFields();
			for(int i=0;i<fieldArray.length;i++){
				String fieldName=fieldArray[i].getName();
				String newfieldName=fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);
				Method meth=cla.getDeclaredMethod("get"+newfieldName);
				if(meth.invoke(obj)!=null){
					if(fieldName.lastIndexOf("ID")!=-1){
						fieldID=fieldName;
						fieldIDvalue=meth.invoke(obj);
						fieldIDType=meth.getReturnType().getSimpleName();
					}
				}
			}
			sql.append(" where "+fieldID+"=?");
			listByID.add(list.size()+1);
			listByID.add(fieldID);
			listByID.add(fieldIDvalue);
			listByID.add(fieldIDType);
			list.add(listByID);
			System.out.println(sql.toString());
			int resultNum=connection.executeUpdate(sql.toString(), list);
			if(resultNum>0){
				result=true;
			}
		}
		return result;
	}

 

@SuppressWarnings("unchecked")
//根据ID取某个实例数据,并返回ArrayList
	public ArrayList<Object> getDataById(Object obj, Object Id) throws Exception {
		ArrayList list_obj=null;
		if(obj!=null){
			list_obj=new ArrayList<Object>();
			Class cla=obj.getClass();
			String tableName=cla.getSimpleName();
			StringBuffer sql=new StringBuffer();
			ArrayList list=new ArrayList();
			ArrayList listByID=new ArrayList();
			String fieldID="";
			Object fieldIDvalue="";
			String fieldIDType="";
			sql.append("select ");
			Field[] fieldArray=cla.getDeclaredFields();
			for(int i=0;i<fieldArray.length;i++){
				String fieldName=fieldArray[i].getName();
				String newfieldName=fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);
				Method meth=cla.getDeclaredMethod("get"+newfieldName);
				if(meth.invoke(obj)!=null){
					if(fieldName.lastIndexOf("ID")!=-1){
						fieldID=fieldName;
						fieldIDvalue=Id;
						fieldIDType=meth.getReturnType().getSimpleName();
					}
				}
				sql.append(fieldName+",");
				
			}
			sql.deleteCharAt(sql.lastIndexOf(","));
			sql.append(" from ");
			sql.append(tableName);
			sql.append(" where "+fieldID+"=?");
			listByID.add(list.size()+1);
			listByID.add(fieldID);
			listByID.add(fieldIDvalue);
			listByID.add(fieldIDType);
			list.add(listByID);
			System.out.println(sql.toString());
			ResultSet rs=connection.executeQuery(sql.toString(), listByID);
			Object obj_n=null;
			while(rs.next()){
				   obj_n=obj.getClass().newInstance();
				   Class obj_n_cla=obj_n.getClass();
				   Field[] obj_n_cla_array=obj_n_cla.getDeclaredFields();
				   for(int i=0;i<obj_n_cla_array.length;i++){
						String fieldName=obj_n_cla_array[i].getName();
						String newfieldName=fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);
						Method meth=obj_n_cla.getDeclaredMethod("set"+newfieldName,obj_n_cla_array[i].getType());
						if(meth!=null){
							meth.invoke(obj_n, new Object[]{rs.getObject(fieldName)});
						}
				   }
				   list_obj.add(obj_n);
			}
		}
		return list_obj;
	}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics