怎么从ResultSet的结果自动构建JavaBean

 我来答
硪丨暧恋
2017-04-20 · TA获得超过8980个赞
知道大有可为答主
回答量:5336
采纳率:93%
帮助的人:2210万
展开全部
基本上就两种方式:
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;}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式