顺序获取javaBean中的属性和对应的值

代码
 /**
 * @功能描述:顺序获取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,感谢原作者的无私奉献~

转载于:https://blog.51cto.com/1197822/2157125

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值