怎么从ResultSet的结果自动构建JavaBean
1个回答
展开全部
基本上就两种方式:
1、自己new一个Bean,循环后自己逐个对应set进去
2、使用反射机制
对查询出来的字段动态添加前缀set,并将首字段改为大写,这样就可以调用到指定Bean指定字段的set方法
印象中没有更方便的方法了
/***从ResultSet绑定到JavaBean**@paramResultSet*@paramDTO(JavaBean)*@returnDTO*/publicstaticDTObindDataToDTO(ResultSetrs,DTOdto)throwsException{//取得Method方法Method[]methods=dto.getClass().getMethods();//取得ResultSet的列名ResultSetMetaDatarsmd=rs.getMetaData();intcolumnsCount=rsmd.getColumnCount();String[]columnNames=newString[columnsCount];for(inti=0;i<columnsCount;i++){columnNames[i]=rsmd.getColumnLabel(i+1);}//遍历ResultSetwhile(rs.next()){//反射,从ResultSet绑定到JavaBeanfor(inti=0;i<columnNames.length;i++){//取得Set方法StringsetMethodName="set"+columnNames[i];//遍历Methodfor(intj=0;j<methods.length;j++){if(methods[j].getName().equalsIgnoreCase(setMethodName)){setMethodName=methods[j].getName();Objectvalue=rs.getObject(columnNames[i]);//实行Set方法try{//JavaBean内部属性和ResultSet中一致时候MethodsetMethod=dto.getClass().getMethod(setMethodName,value.getClass());setMethod.invoke(dto,value);}catch(Exceptione){//JavaBean内部属性和ResultSet中不一致时候,使用String来输入值。MethodsetMethod=dto.getClass().getMethod(setMethodName,String.class);setMethod.invoke(dto,value.toString());}}}}}returndto;}
1、自己new一个Bean,循环后自己逐个对应set进去
2、使用反射机制
对查询出来的字段动态添加前缀set,并将首字段改为大写,这样就可以调用到指定Bean指定字段的set方法
印象中没有更方便的方法了
/***从ResultSet绑定到JavaBean**@paramResultSet*@paramDTO(JavaBean)*@returnDTO*/publicstaticDTObindDataToDTO(ResultSetrs,DTOdto)throwsException{//取得Method方法Method[]methods=dto.getClass().getMethods();//取得ResultSet的列名ResultSetMetaDatarsmd=rs.getMetaData();intcolumnsCount=rsmd.getColumnCount();String[]columnNames=newString[columnsCount];for(inti=0;i<columnsCount;i++){columnNames[i]=rsmd.getColumnLabel(i+1);}//遍历ResultSetwhile(rs.next()){//反射,从ResultSet绑定到JavaBeanfor(inti=0;i<columnNames.length;i++){//取得Set方法StringsetMethodName="set"+columnNames[i];//遍历Methodfor(intj=0;j<methods.length;j++){if(methods[j].getName().equalsIgnoreCase(setMethodName)){setMethodName=methods[j].getName();Objectvalue=rs.getObject(columnNames[i]);//实行Set方法try{//JavaBean内部属性和ResultSet中一致时候MethodsetMethod=dto.getClass().getMethod(setMethodName,value.getClass());setMethod.invoke(dto,value);}catch(Exceptione){//JavaBean内部属性和ResultSet中不一致时候,使用String来输入值。MethodsetMethod=dto.getClass().getMethod(setMethodName,String.class);setMethod.invoke(dto,value.toString());}}}}}returndto;}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询