您的位置:首页 > 其它

实现JDBC结果集的转换(ResultSet和List的转换)

2007-11-19 17:52 405 查看
相关代码




public class DTOPopulator ...{




public static List populate(ResultSet rs,Class clazz) throws Exception...{


ResultSetMetaData metaData = rs.getMetaData(); //取得结果集的元元素


int colCount = metaData.getColumnCount(); //取得所有列的个数


List ret = new ArrayList(); //存放返回结果的容器


Field[] fields = clazz.getDeclaredFields(); //取得业务对象的属性






while(rs.next())...{


Object newInstance = clazz.newInstance(); //构造业务对象实例


//将结果集中每一条记录,每一个字段取出,根据命名规则,对对应的业务对象的属性进行赋值




for(int i=1;i<=colCount;i++)...{ //对于该记录的每一列




try...{


Object value = rs.getObject(i);




for(int j=0;j<fields.length;j++)...{


Field f = fields[j];




if(f.getName().equalsIgnoreCase(metaData.getColumnName(i).replaceAll("_","")))...{


BeanUtils.copyProperty(newInstance,f.getName(),value);


}


}




}catch (Exception e) ...{


// TODO: handle exception


e.printStackTrace();


}


}


ret.add(newInstance);


}


return ret;


}

ResultSetMetaData rsmt=rs.getMetaData();是什么意思?答:得到结果集(rs)的结构信息,比如字段数、字段名等。

String类的replaceAll()方法,第一个参数是一个正则表达式,对于"[abc]abc"字符串,进行replaceAll("[abc]","1");替换之后的结果是:[111]111,正则表达式[abc]表示a,b,c的任何字符.

replaceAll

public String replaceAll(String regex,
String replacement)

使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每个子字符串。
此方法调用的 str.replaceAll(regex, repl) 形式产生与以下表达式完全相同的结果:

Pattern
.
compile
(regex).
matcher
(str).
replaceAll
(repl)

参数:
regex
- 用来匹配此字符串的正则表达式 返回: 得到的 String 抛出:
PatternSyntaxException
- 如果正则表达式的语法无效
Class
类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该
Class
对象。基本的 Java 类型(
boolean
byte
char
short
int
long
float
double
)和关键字
void
也表示为
Class
对象。

Class
没有公共构造方法。
Class
对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的
defineClass
方法自动构造的

getDeclaredFields

public Field[] getDeclaredFields()
throws SecurityException

返回
Field
对象的一个数组,这些对象反映此
Class
对象所表示的类或接口所声明的所有字段,包括公共、保护、默认(包)访问和私有字段,但不包括继承的字段。返回数组中的元素没有排序,也没有任何特定的顺序。如果该类或接口不声明任何字段,或者此
Class
对象表示一个基本类型、一个数组类或 void,则此方法返回一个长度为 0 的数组。newInstance()
创建此 Class 对象所表示的类的一个新实例。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: