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
作者:Ac峰
来源链接:https://blog.csdn.net/Faithfeng/article/details/109197065
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。