67,550
社区成员




package nan;
import java.util.ArrayList;
import java.util.List;
import java.lang.reflect.*;
import java.sql.*;
//flashFXP访问;Server-u:建ftp服务器的
public class MetaDataTest<T> {
public List<T>generalSearch(String sql,Object[]args,String className){
//存储返回的集合对象
List<T>list=new ArrayList<T>();
Connection con=DaoFactory.getConnection();
PreparedStatement pstmt=null;
ResultSet rs=null;
//使用反射获取类的信息;
try {
Class<T>clazz=(Class<T>)Class.forName(className);
Field[]fields=clazz.getDeclaredFields();
Method method=null;
pstmt=con.prepareStatement(sql);
rs=pstmt.executeQuery();
ResultSetMetaData resmd=null;
resmd=rs.getMetaData();
int columncount=resmd.getColumnCount();
while(rs.next()){
T obj=clazz.newInstance();//实例化
for(int i=1;i<=columncount;i++){
String cname=resmd.getColumnName(i);
int ctype=resmd.getColumnType(i);
for(Field f:fields){
if(cname.equals(f.getName())){
//封装数据
String firstLetter=f.getName().substring(0,1).toUpperCase();
String methodName="set"+firstLetter+f.getName().substring(1);
//如果列是整型的
if(ctype==Types.INTEGER){
//System.out.println(methodName);
//System.out.println(rs.getInt(i));
//method=clazz.getMethod(methodName, Integer.class);
//method.invoke(obj, rs.getInt(i));
}
//else if(ctype==Types.VARCHAR){
// method=clazz.getMethod(methodName, String.class);
// method.invoke(obj, rs.getString(i));
// }else if(ctype==Types.TIMESTAMP){
// method=clazz.getMethod(methodName, Date.class);
// method.invoke(obj, rs.getDate(i));
// }else if(ctype==Types.NUMERIC){
// method=clazz.getMethod(methodName,Double.class);
// method.invoke(obj, rs.getDouble(i));
// }
}
}
list.add(obj);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}
package nan;
import java.util.List;
public class TestMD {
public static void main(String[] args) {
String sql="select * from userinfo";
MetaDataTest mdt=new MetaDataTest<UserInfo>();
List<UserInfo>list=mdt.generalSearch(sql, null,UserInfo.class.getName());
System.out.println("ID\t姓名\t密码");
for(UserInfo user:list){
System.out.println(user.getId()+"\t"+
user.getUsername()+"\t"+
user.getPwd()+"\t");
}
}
}