java 封装结果集_java 泛型类反射封装结果集

[java]代码库/**

* @param args

*/

public static void main(String[] args) {

String sql="select * from user where name=1";

try {

User user=BaseDao.getClass(sql, User.class);

System.out.println(user.getName());

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* 使用泛型类封装查询结果

* @param

* @throws Exception

*/

public static T getClass(String sql, Class clazz) throws Exception {

PreparedStatement ps = null;

ResultSet rs = null;

Connection con=JDBCUtil.getConnection();

ps=con.prepareStatement(sql);

rs=ps.executeQuery();

//结果集的字段

ResultSetMetaData md=rs.getMetaData();

//将字段添加到string数组

String[] mdString=new String[md.getColumnCount()];

for(int i=0;i

mdString[i]=md.getColumnLabel(i+1);

}

//声明一个泛型类

T t=null;

//获得传入类的方法集合

Method[] methods=clazz.getMethods();

if(rs.next()) {

t=clazz.newInstance();

for(int j=0;j

String clsMethod=mdString[j];

//将结果集的字段首字母替换成大写并且以set开头(例:setName对象类里面的set方法)

clsMethod="set"+clsMethod.replaceFirst(clsMethod.substring(0,1), clsMethod.substring(0, 1).toUpperCase());

for(Method m:methods) {

//匹配传入类的方法集合如果匹配成功则执行。

if(clsMethod.equals(m.getName())) {

m.invoke(t, rs.getObject(j+1));

}

}

}

}

return t;

}

//源代码片段来自云代码http://yuncode.net

694748ed64b9390909c0d88230893790.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值