BeanUtil 反射机制 拷贝对象类或list
来源:互联网 发布:淘宝刷好评免费赠衣服 编辑:程序博客网 时间:2024/06/08 04:43
BeanUtil为拷贝类,list,map的工具类,类似BeansUtils
package com.gy.util;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.math.BigDecimal;import java.sql.ResultSet;import java.util.*;/** * 此类为重写BeanUtils.copyProperties方法,其他包含List等情况,可以扩展重写 * * @author chenhs * @version 20170728 * */public class BeanUtil { /** * @param target 目标类 * @param source 原类 * @param objects 对象集合 */ public static void copyProperties(Object target, Object source, Object... objects) { try { Class clazz1 = source.getClass(); Class clazz2 = target.getClass(); Field[] fields1 = clazz1.getDeclaredFields(); Field[] fields2 = clazz2.getDeclaredFields(); for (Field field1 : fields1) { String name1 = field1.getName(); Method m = clazz1.getMethod("get" + toUpcase(name1)); for (Field field2 : fields2) { String name2 = field2.getName(); if (name1.equals(name2)) { field2.setAccessible(true); if (m.invoke(source) != null) { field2.set(target, m.invoke(source)); } } //判断objects if (objects.length > 0) { HashMap<String, Object> paramMap = (HashMap<String, Object>) objects[0]; if (paramMap.get(name2) != null) { field2.setAccessible(true); field2.set(target, paramMap.get(name2)); } } } } } catch (Exception e) { e.printStackTrace(); } } /** * @param target 目标类 * @param map 原类 */ public static void copyMapProperties(Object target, Map<String,Object> map) { try { Class clazz2 = target.getClass(); Field[] fields2 = clazz2.getDeclaredFields(); for (String key : map.keySet()) { String name1 = key; Object value =(Object) map.get(key); for (Field field2 : fields2) { String name2 = field2.getName(); if (name1.toUpperCase().equals(name2.toUpperCase())) { field2.setAccessible(true); if (value != null) { field2.set(target, value); } } } } } catch (Exception e) { e.printStackTrace(); } } /** * 如果某个参数为固定值,则可以加以下对象objects,如: * paramMap.put("userId", "aaaaaaaaaaa"); * paramMap.put("num", 777777777);固定值 * * @param list 源list * @param target 目标类CLASS * @param objects 对象集合 * @return list */ public static List<?> copyPropertiesList(List<?> list, Class target, Object... objects) { List<Object> result = new ArrayList(); if (list != null) { for (Object o : list) { try { Object d = target.newInstance(); copyProperties(d, o, objects); result.add(d); } catch (Exception e) { e.printStackTrace(); } } } return result; } /*** * 此方法为jdbc中调用指生成结果的方法,其他类型可以继续添加.... * *@author chenhs * update wmk * * @param clazz 类 * @param rs 结果集合 * @return object * @date 2015/11/19 */ public static Object getBeanForRs(Class clazz, ResultSet rs) { try { Object target = clazz.newInstance(); Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { String name = field.getName(); field.setAccessible(true); Class type = field.getType(); try { if (type.equals(String.class)) { field.set(target, rs.getString(name)); } else if (type.equals(Integer.class)) { field.set(target, rs.getInt(name)); } else if (type.equals(Long.class)) { field.set(target, rs.getLong(name)); } else if (type.equals(Float.class)) { field.set(target, rs.getFloat(name)); } else if (type.equals(BigDecimal.class)) { field.set(target, rs.getBigDecimal(name)); } else if(type.equals(UUID.class)){ field.set(target, UUID.fromString(rs.getString(name))); } else if(type.equals(Date.class)){ field.set(target,rs.getDate(name)); } } catch (Exception e) { System.out.println(e.getMessage()); } } return target; } catch (Exception e) { e.printStackTrace(); } return null; } /** * 首字母转大写 * * @param s 字符串 * @return stirng * update wmk */ private static String toUpcase(String s) { return s.substring(0, 1).toUpperCase() + s.substring(1, s.length()); }}
阅读全文
0 0
- BeanUtil 反射机制 拷贝对象类或list
- 工具类-复制对象BeanUtil
- Java -- 利用反射实现对象之间相同属性复制BeanUtil
- 反射机制调用类的方法,或操作成员,以及反射中的数组对象
- 通过Java的反射机制实现对象的拷贝
- Java反射机制实现对象属性值的拷贝
- BaseCode之对象工具类:BeanUtil.java
- java反射(对象拷贝)
- 反射实现对象拷贝
- 动态调用Web Service及C#反射返回类或List对象问题解决
- C# 中利用反射机制拷贝类的字段和属性(拷贝一个类对象的所有东西付给另一个类对象,而不是付给引用地址)
- Java中的反射机制(二) 一个利用反射进行对象拷贝的例子
- Java中的反射机制 一个利用反射进行对象拷贝的例子
- Java中的反射机制(二) 一个利用反射进行对象拷贝的例子
- BEANUTIL 对象转JSON
- java__反射、批处理、对象拷贝
- java反射(5)通过反射拷贝对象
- java类反射机制创建对象
- android studio 运行时无法识别真机
- Mysql中各类型对应JDBC类型编号
- Netty4.0学习笔记系列之四:混合使用coder和handler
- 地平线2018电话面试
- 记一个错误
- BeanUtil 反射机制 拷贝对象类或list
- mybatis
- 如何使用七牛申请并使用免费SSL证书
- Oracle ROWNUM用法和分页查询总结
- 单选 复选框自定义样式
- 查看表空间的大小及使用率
- AES加密、解密工具类
- CUDA学习四:常量内存与事件
- 服务器ssh升级导致的java程序ssh连接失败解决办法