java 批量设置实体类集合里面某一个属性的值

java 批量设置实体类集合里面某一个属性的值

业务场景:
多个实体类的集合,某一个属性批量统一设值。

例如 :user实体类,包含属性 id、name、sex
现在有100多个user 要把他们的sex全部设为 男,一般的办法就是把这些user装在一个list集合中,然后遍历把值set进去。现在我就把这个功能抽取出来做成了一个工具类,代码如下

/**
* 批量设置实体类集合里面某一个属性的值
* @param entitys    目标实体类集合
* @param key   目标属性
* @param value 值
* @return
* @throws IllegalAccessException
*/
public <E> void setValue(List<E> entitys, String key, Object value) throws IllegalAccessException {
   for (Object list:entitys) {
       Class aClass = list.getClass();
       Field[] aFields = aClass.getDeclaredFields();//获取实体类的所有属性
       for (Field f:aFields) {
           if (f.getName().equals(key)){
               f.setAccessible(true);//设置访问权限
               f.set(list,value);//赋值
           }
       }
   }
}

通过java反射机制拿到类所有声明的字段,然后遍历与目标属性的name进行匹配。

注意:在Java中可以通过反射进行获取实体类中的字段值,当未设置Field的setAccessible方法为true时,会在调用的时候进行访问安全检查,会抛出IllegalAccessException异常。所以set的时候先设置为true

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值