例如我有一个user的javabean,里面有name,age,password等属性,然后在Dao层里面想用Beanutils.populate(Object,Map)方法代替user.setXXX,这个Map怎么获得?
除了反射有没有其他方法。
------解决思路----------------------
你是说数据库里面的?
参考ResultSetMetaData,获得列信息,然后,只要不是太古老的JDBC驱动,一般都支持rs.getObject(columnName)
你可以map.put(columnName, rs.getObject(columnName));
------解决思路----------------------
试试这个!
/*
*java.beans.Introspector、java.beans.PropertyDescriptor
*/
public static Map<String, User> convertBeanToMap(User user)
{
if(user == null){
return null;
}
Map<String, User> map = new HashMap<String, User>();
try {
BeanInfo beanInfo = Introspector.getBeanInfo(user.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
String key = property.getName();
if (!key.equals("class")) {
Method getter = property.getReadMethod();
User value = getter.invoke(user);
map.put(key, value);
}
}
} catch (Exception e) {
logger.error("convert BeanToMap Error " + e);
}
return map;
}