①新建一个和数据库字段匹配的类UserInfo< http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PC9wPgo8cHJlIGNsYXNzPQ=="brush:sql;">public class UserInfo { private int id; private String username; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "UserInfo [id=" + id + ", username=" + username + ", password=" + password + "]"; } } ②在JdbcUtils类中添加一个应用反射机制的数据库查询函数
public List queryRef(String sql, List params, Class cls)
throws Exception {
List list = new ArrayList<>();
ps = connection.prepareStatement(sql);
if (params != null && !params.isEmpty()) {
for (int i = 0; i < params.size(); i++)
ps.setObject(i + 1, params.get(i));
}
resultSet = ps.executeQuery();
ResultSetMetaData metaData = resultSet.getMetaData();
int col_len = metaData.getColumnCount();
while (resultSet.next()) {
// 存在记录时,实例化一个对象
T record = cls.newInstance();
for (int i = 0; i < col_len; i++) {
String col_name = metaData.getColumnName(i + 1);
Object col_value = resultSet.getObject(col_name);
// 将列对应的值赋给对象的相应字段
Field field = cls.getDeclaredField(col_name);
field.setAccessible(true);
field.set(record, col_value);
}
// 将这条记录添加到List中
list.add(record);
}
return list;
}
③TestMain类,添加一个执行操作
/*执行六:反射机制查询记录*/
String sqlQuery = "select * from userinfo";
try {
List list = jdbcUtils.queryRef(sqlQuery, null,
UserInfo.class);
System.out.println(list);
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} finally {
jdbcUtils.release();
}