private static <T> List<T> execute4Been(Connection conn, Class<T> clazz, String sql, Object... objects) throws Exception {
		PreparedStatement ps = null;
		ResultSet rs = null;
		List<T> list = new ArrayList<T>();
		try {
			ps = conn.prepareStatement(sql);
			for (int i = 1; i <= objects.length; i++) {
				ps.setObject(i, objects[i - 1]);
			}
			rs = ps.executeQuery();
			if (rs != null) {
				while (rs.next()) {
					int columncount = rs.getMetaData().getColumnCount();
					T object = clazz.getConstructor().newInstance();
					for (int i = 1; i <= columncount; i++) {
						String columnName = rs.getMetaData().getColumnLabel(i);
						String firstLetter = columnName.substring(0, 1).toUpperCase();
						String setMethodName = "set" + firstLetter + columnName.substring(1);
						Method setMethod = clazz.getMethod(setMethodName, new Class[] { clazz.getDeclaredField(columnName).getType() });
						if (rs.getObject(i) != null) {
							setMethod.invoke(object, rs.getObject(i));
						}
					}
					list.add(object);
				}
			}
		} finally {
			try {
				if (rs != null)
					rs.close();
			} finally {
				if (ps != null)
					ps.close();
			}
		}
		return list;
	}