JAVA 利用反射机制查询数据库返回相应对象

public static void main(String [] rags){
		SQLHepler SH=new SQLHepler();
		String  sql="select * from DB_Image";
		String [] p={"107"};
		try {
		 List<Object> c=SH.excuteSelectSQL(sql, null, DBImage.class);
		  for (Object o:c) {
			  DBImage cam=(DBImage) o;
			  System.out.println(cam.getImageID()+" "+cam.getImageRealPath());
			
		 }
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		 
	}
	private   List<String> getAllMethods(Class c){
		List<String> allMendth=new ArrayList<String>();
		Field [] f=c.getDeclaredFields();
		for(int i=0;i<f.length;i++){
			String m="set";
			m+=f[i].getName();
			allMendth.add(m);
		}
		return allMendth;
	}
	
	
	public List<Object> excuteSelectSQL(String sql,String [] parmates,Class clazz) throws Exception{
			 List<Object> all=new ArrayList<Object>();
			 Conn conn=new Conn();
			 this.con=conn.getConn();
			 this.ps=con.prepareStatement(sql);
			 if(parmates!=null && !parmates.equals("")){
				   int index=1;
				   for(String s:parmates){
					   this.ps.setString(index, s);
					   index++;
				   }
			  }
			 this.rs=this.ps.executeQuery();
			 while(rs.next()){
				    Object o = clazz.newInstance();
					List<String> allMethods=getAllMethods(clazz);
					int index=1;
					for(String s:allMethods){
						clazz.getDeclaredMethod(s, String.class).invoke(o, rs.getString(index));
						index++;
					}
					all.add(o);
			 }
			return all;
	}

posted @ 2014-03-04 20:49  赵侠客  阅读(749)  评论(0编辑  收藏  举报