`

利用反射对查询数据自动组装成实体对象

    博客分类:
  • JAVA
 
阅读更多
利用反射,对查询的结果集自动组装成实体对象:
/**
	 * 利用反射对查询数据的自动组装成对象实体。
	 */
	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);
		}
	}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics