importjava.lang.reflect.Field;importjava.lang.reflect.Method;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.util.ArrayList;importjava.util.Date;importjava.util.List;publicclassBasicDao{privatestaticConnectioncon=null;privatestaticPreparedStatementps=null;privatestaticResultSetrs=null;publicstatic<T>List<T>selectAll(Class<T>clazz,Stringsql,Objectparameter){List<T>result=newArrayList<T>();//遍历parameter的所有属性和值作为参数Field[]paramField=parameter.getClass().getDeclaredFields();for(Fieldpf:paramField){try{if(pf.getType()==String.class){if(pf.get(parameter)!=null){sql=sql.replace("/*"+pf.getName()+"*/","'"+pf.get(parameter).toString()+"'");}}else{if(pf.get(parameter)!=null){sql=sql.replace("/*"+pf.getName()+"*/",pf.get(parameter).toString());}}System.out.println(pf.getName()+":"+pf.get(parameter));}catch(IllegalArgumentExceptione){e.printStackTrace();}catch(IllegalAccessExceptione){e.printStackTrace();}}try{con=DBConnection.ConnectDB();ps=con.prepareStatement(sql);System.out.println("[sql]:"+ps.toString().substring(ps.toString().indexOf("")));rs=ps.executeQuery();while(rs.next()){Tentity;try{entity=clazz.newInstance();}catch(Exceptione){e.printStackTrace();returnresult;}Field[]entityFiled=clazz.getFields();intfieldCount=0;for(Fieldef:entityFiled){//根据字段取出对应set方法赋值Methodm;try{m=entity.getClass().getMethod("set"+ef.getName().substring(0,1).toUpperCase()+ef.getName().substring(1),ef.getType());if(ef.getType()==Integer.class){m.invoke(entity,rs.getInt(++fieldCount));}elseif(ef.getType()==Long.class){m.invoke(entity,rs.getLong(++fieldCount));}elseif(ef.getType()==Double.class){m.invoke(entity,rs.getDouble(++fieldCount));}elseif(ef.getType()==Date.class){m.invoke(entity,rs.getDate(++fieldCount));}elseif(ef.getType()==String.class){m.invoke(entity,rs.getString(++fieldCount));}//TODO}catch(Exceptione){e.printStackTrace();returnresult;}}result.add(entity);}}catch(Exceptione){e.printStackTrace();}returnresult;}}