/** * 利用反射对查询数据的自动组装成对象实体。 */ static void read() { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = JdbcUtilsSingle.getInstance().getConnection(); String querySql = "select * from user where id = 1 "; ps = conn.prepareStatement(querySql); rs = ps.executeQuery(); ResultSetMetaData rsd = rs.getMetaData(); int count = rsd.getColumnCount(); String[] columns = new String[count]; for (int i = 1; i <= count; i++) { String strColumn = rsd.getColumnName(i); //把列名首字母转成大写 strColumn = strColumn.replaceFirst(strColumn.substring(0, 1), strColumn.substring(0, 1).toUpperCase()); columns[i - 1] = strColumn; } User user = null; if (rs.next()) { user = new User(); for (int i = 0; i < columns.length; i++) { String methodName = "set" + columns[i]; //获取实体对象直接实现方法(不包含从父类继承的) Method[] methods = user.getClass().getDeclaredMethods(); for (Method method : methods) { if (method.getName().equals(methodName)) { //利用反射对实体对象的属性赋值 method.invoke(user, rs.getObject((i + 1))); break; } } } } System.out.println(user); } catch (Exception e) { } finally { JdbcUtilsSingle.getInstance().free(rs, ps, conn); } }
利用反射对查询数据自动组装成实体对象
利用反射,对查询的结果集自动组装成实体对象:
猜你喜欢
转载自sunjianfeng610.iteye.com/blog/2228486
今日推荐
周排行