public clas s Tes t{
/**
*2013-08-02 zhan gjian bo
* 将Re sultS et转换为一个Lis t<Obj ect>//根据具体需求,下列判断需要增加新的类型
java反射的作用及应用场景*要求是数据库字段名与Model类的字段必须保持一致(不区分大小写) * @p aramo 传入的对象,亦是返回Lis t中真正的对象类
* @p aramrs 传入的Resu ltSet对象
* @re turn
* @throw s Exc eptio n
*/
pu blicstati c <E> List<E> g etLis tFrom Resul t(Cla ss<?exten ds E> claz z,Res ultSe t rs) thro ws Ex cepti on{
List<E> l t=new Arra yList<E>();
w hile(rs.ne xt()){
E o=(E)cla zz.ne wInst ance();
Fiel d[] f ield=clazz.getD eclar edFie lds();
int c olumn s=rs.getMe taDat a().g etCol umnCo unt();
for(i nt i=1;i<c olumn s;i++){
Stri ng co lumn=rs.ge tMeta Data().get Colum nName(i);
fo r(Fie ld f:field){
if(colum n.equ alsIg noreC ase(f.getN ame())){
Pr opert yDesc ripto r
pd=new P roper tyDes cript or(f.getNa me(), claz z);
Meth od m=pd.ge tWrit eMeth od();
if("j ava.l ang.S tring".equ als(f.getT ype().getN ame())){
m.invo ke(o,rs.ge tStri ng(co lumn));
}el se
if("jav a.mat h.Big Decim al".e quals(f.ge tType().ge tName())){
m.in voke(o,rs.getBi gDeci mal(c olumn));
}e lse i f("ja va.sq l.Tim estam p".eq uals(f.get Type().get Name())){
m.inv oke(o,rs.g etTim estam p(col umn));
}els e
if("java.sql.Date".equa ls(f.getTy pe().getNa me())){
m.invok e(o,t Date(colum n));
}elseif("l ong".equal s(f.g etTyp e().g etNam e())){ m.i nvoke(o,rs.getL ong(c olumn));
}e lse i f("sh ort".equal s(f.g etTyp e().g etNam e())){ m.i nvoke(o,rs.getS hort(colum n));
}
}
}
}
lt.add(o);
}
re turnlt;
}
/**
* 2013-08-02 z hangj ianbo
*将Resu ltSet转换为一个Objec t//根据具体需求,下列判断需要增加新的类型<br/>
* 要求是数据库字段名与Mod el类的字段必须保持一致(不区分大小写)
*@para m o 传入的对象,亦是返回对象中真正的对象类
* @p aramrs 传入的Resu ltSet对象
* @re turn
* @throw s Exc eptio n
*/
pu blicstati c <E> E ge tOneF romRe sult(Class<? ex tends E> c lazz,Resul tSet
rs) t hrows Exce ption{
E o=(E)claw Insta nce();
i f(rs.next()){
Fie ld[]field=clat Decla redFi elds();
intcolum ns=rs.getM etaDa ta().getCo lumnC ount();
for(int i=1;i<colum ns;i++){
Str ing c olumn=rs.g etMet aData().ge tColu mnNam e(i);
f or(Fi eld f:fiel d){
if(colu mn.eq ualsI gnore Case(f.get Name())){
P roper tyDes cript or pd=new
Prope rtyDe scrip tor(f.getN ame(), cla zz);
Met hod m=pd.g etWri teMet hod();
if("java.lang.Strin g".eq uals(f.get Type().get Name())){
m.inv oke(o,rs.g etStr ing(c olumn));
}e lse i f("ja va.ma th.Bi gDeci mal".equal s(f.g etTyp e().g etNam e())){
m.i nvoke(o,rs.getB igDec imal(colum n));
}else
if("j ava.s ql.Ti mesta mp".e quals(f.ge tType().ge tName())){
m.in voke(o,rs.getTi mesta mp(co lumn));
}el se
if("jav a.sql.Date".equ als(f.getT ype().getN ame())){
m.invo ke(o,rs.ge tDate(colu mn));
}else if("long".equa ls(f.getTy pe().getNa me())){ m.invok e(o,t Long(colum n));
}elseif("s hort".equa ls(f.getTy pe().getNa me())){ m.invok e(o,t Short(colu mn));
}
}
}
}
}
retur n o;
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论