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