利用 Java 反射给 User 类中的每个属性变量赋予值 .


public class JdbcTest {

/**
* 利用 Java 反射机制,写的一个通用查询方法
*
* @param sql
*/
public <T> T query(Class<T> clazz, String sql, Object... args) {
T entity = null;

Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
User user = null;

try {
connection = JdbcUtils.getConnection();
// System.out.println(sql);
preparedStatement = connection.prepareStatement(sql);
if (args != null) {
for (int i = 0; i < args.length; i++) {
preparedStatement.setObject(i + 1, args[i]);
}
}

resultSet = preparedStatement.executeQuery();
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
Map<String, Object> values = new HashMap<String, Object>();


if (resultSet.next()) {
for (int i = 0; i < resultSetMetaData.getColumnCount(); i++) {
String columnLable = resultSetMetaData.getColumnLabel(i + 1);
Object columnValue = resultSet.getObject(i + 1);
values.put(columnLable, columnValue);
}
}

System.out.println("--->数据库:"+values);
if (values.size() > 0) {
entity = (T) clazz.newInstance();
for (Entry<String, Object> entry : values.entrySet()) {
String fieldName = entry.getKey();
Object fieldValue = entry.getValue();
Field field = clazz.getDeclaredField(fieldName);
field.setAccessible(true);
field.set(entity, fieldValue);
}
}

} catch (Exception e) {
e.printStackTrace(http://www.amjmh.com/v/BIBRGZ_558768/);
} finally {
JdbcUtils.release(preparedStatement, connection, resultSet);
}
return entity;
}

@Test
public void qurey() {
String sql = "SELECT user_name userName,password password,register_time registerTime,"
+ "sex sex,user_role userRole,id_card idCard FROM user WHERE user_name=?";
User user = query(User.class, sql, "小王");
System.out.println("--->反射到 User 类中:"+user.toString());
}
}

---------------------

原文地址:https://www.cnblogs.com/hyhy904/p/11335094.html