BeanPropertyRowMapper

import java.lang.reflect.InvocationTargetException; 
 import java.lang.reflect.Method; 
 import java.sql.ResultSet; 
 import java.sql.ResultSetMetaData; 
 import java.sql.SQLException; 
 
 
 public class BeanPropertyRowMapper<T> implements RowMapper<T>{ 
 
 
 private Class<?> clazz; 
 public BeanPropertyRowMapper(Class<?> clazz) { 
 this.clazz = clazz; 
 } 
 
 @SuppressWarnings("unchecked") 
 @Override 
 public T mapRow(ResultSet rs) throws SQLException { 
 
 ResultSetMetaData rsmd = rs.getMetaData(); 
 
 Object obj = null; 
 try { 
 obj = clazz.newInstance(); 
 
 for(int i = 1;i <= rsmd.getColumnCount();i++) { 
 String columnName = rsmd.getColumnLabel(i); 
 Object columnValue = rs.getObject(columnName); 
 setPropertyValue(obj,columnName,columnValue); 
 } 
 
 } catch (Exception e) { 
 e.printStackTrace(); 
 } 
 
 return (T)obj; 
 } 
 
 
     private void setPropertyValue(Object obj,String columnName, Object columnValue) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { 
         String methodName = "set"+columnName.substring(0,1).toUpperCase()+columnName.substring(1); 
         
         Method[] methods = clazz.getMethods(); 
         for(Method method : methods) { 
         if(methodName.equals(method.getName())) { 
         method.invoke(obj, columnValue); 
         break; 
     } 
 } 
 } 
 
 
 }


转载于:https://my.oschina.net/cshuangxi/blog/177027

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值