代码
/**
* @功能描述:顺序获取javaBean中的属性和对应的值,并格式化为"'','',...'',''"
*/
public static String getFieldValueByName(Object obj) {
StringBuffer valueStr = new StringBuffer();
Field fields[] = obj.getClass().getDeclaredFields();
String[] beanName = new String[fields.length];
Object[] beanValue = new Object[fields.length];
Object[] beanSourceType = new Object[fields.length];
try {
Field.setAccessible(fields, true);
for (int i = 0; i < beanName.length; i++) {
beanName[i] = fields[i].getName();
beanValue[i] = fields[i].get(obj);
beanSourceType[i] = fields[i].getType().getName();
if ("java.lang.Integer".equals(beanSourceType[i]) || "java.lang.Long".equals(beanSourceType[i])
|| "java.lang.BigInteger".equals(beanSourceType[i]) || "java.lang.Float".equals(beanSourceType[i])
|| "java.lang.Double".equals(beanSourceType[i]) || "java.lang.BigDecimal".equals(beanSourceType[i])) {
valueStr.append(beanValue[i]);
}else{
valueStr.append("'");
valueStr.append(converEmpty((String)beanValue[i]));
valueStr.append("'");
}
valueStr.append(",");
}
} catch (Exception e) {
e.printStackTrace();
}
String sqlValueStr = valueStr.toString();
if (sqlValueStr.length() > 0) {
sqlValueStr = sqlValueStr.substring(0, sqlValueStr.lastIndexOf(","));
}
return sqlValueStr;
}
/**
* @功能描述:如果字符串是null,则返回""字符串
*/
public static String converEmpty(String str){
return (str == null || "null".equals(str)) ? "" : str;
}
以上代码中,Field.setAccessible(fields,true); 是最为关键的一点。
在使用java反射机制获取 JavaBean 的属性值时,如果该属性被声明为private 的,需要将setAccessible设置为true. 默认的值为false
参考自http://www.cnblogs.com/dshjava/archive/2010/09/08/1821317.html,感谢原作者的无私奉献~