1、JDBC将返回结果集封装成对象demo
class JdbcDemo { /** * 获取数据库列名 * @param rs * @return */ private static String[] getColNames(ResultSet rs) throws sqlException { ResultSetMetaData rsmd = rs.getMetaData(); //获取查询的列数 int count = rsmd.getColumnCount(); String[] colNames = new String[count]; for(int i = 1; i <= count; i ++) { //获取列名 colNames[i - 1] = rsmd.getColumnLabel(i); } return colNames; } /** * 将JDBC查询返回的结果集,利用反射封装成对象 * @param sql * @param clazz * @return */ private static Object getobject(String sql, Class clazz) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); ps = conn.prepareStatement(sql); rs = ps.executeQuery(); String[] colNames = getColNames(rs); Object object = null; Method[] ms = clazz.getmethods(); if(rs.next()) { object = clazz.newInstance(); for(int i = 0; i < colNames.length; i ++) { String colName = colNames[i]; String methodName = "set" + colName; //稳妥一点。在对象查询下是否有此方法在调用方法 for(Method md : ms) { if(methodName.equals(md.getName())) { md.invoke(object, rs.getobject(colName)); break; } } } } return object; } finally { //释放连接 JdbcUtils.free(rs, ps, conn); } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。