遇到的问题:
1,用户对象成员变量的值都为空(此处为默认值);
2,从oracle取到的日期格式与DateConverter设置的日期格式。
@Test
public void resultSetMetaData2() throws Exception{
Connection conn = JdbcUtils.getConn();
String sql = "select * from users where id = 27 ";
PreparedStatement pst = conn.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
ResultSetMetaData rsMD = rs.getMetaData();
int count = rsMD.getColumnCount();
List<User> list = new ArrayList<User>();
DateConverter converter = new DateConverter();
converter.setPattern(new String("yyyy-MM-dd"));
ConvertUtils.register(converter,Date.class);
while(rs.next()){
User user = new User();
for(int i=1;i<=count;i++){
/**
* 从oracle数据库拿到的名称为大写,如果不转换成小写,则BeanUtils.setProperty找不到属性。
* 如果不进行转换,不会报错,但是User里面的变量都为空指
*/
String name = rsMD.getColumnName(i).toLowerCase();
String value = rs.getString(i);
/**
* 注意:从oracle数据库拿到的日期为2018-08-10 00:00:00.0
* 与设置的日期格式不一致converter.setPattern(new String("yyyy-MM-dd"));
* 所以此处需要转化,这边只是作了简单的赋值测试
*/
if("birthday".equals(name)){
value = "2018-02-01";
}
BeanUtils.setProperty(user,name, value);
}
list.add(user);
}
for(User u:list){
System.out.println(u);
}
}