Bean工具类

/**
 * Bean工具类
 * @author caidongqu
 */
public class BeanMapUtil {

    private static Map<String, List<Field>> CACHE = new ConcurrentHashMap();


    /**
     * list<对象> 转 List<Map>
     * @param list
     * @param <T>
     * @return
     */
    public static <T> List<HashMap2> toListMap(List<T> list){
        if(CollUtils.isEmpty(list))
            return null;
        List<HashMap2> result = new ArrayList();
        for (T o : list) {
            result.add(toMap(o));
        }
        return result;
    }

    /**
     * 映射对象 到 map
     * @param map
     * @param beanObj
     * @param fields
     */
    public static void toMap(Map<String, Object> map, Object beanObj, String ... fields){
        toMap(map, "yyyy-MM-dd HH:mm:ss", beanObj, fields);
    }

    /**
     * 映射对象 到 map
     * @param map
     * @param dateStyle 日期格式
     * @param beanObj
     * @param fields
     */
    public static void toMap(Map<String, Object> map, String dateStyle, Object beanObj, String ... fields){
        for (String field : fields) {
            Object val = Reflections.getFieldValue(beanObj, field);
            if(val != null){
                if(val instanceof Date)
                    val = DateUtils.dateToString((Date)val, dateStyle);
            }
            map.put(field, val);
        }
    }

    /**
     * 转 map
     * @param beanObj
     */
    public static HashMap2 toMap(Object beanObj){
        HashMap2 map = new HashMap2();
        toMap(map, beanObj, false, false);
        return map;
    }

    /**
     * 转 map
     * @param map
     * @param beanObj
     */
    public static void toMap(Map<String, Object> map, Object beanObj){
        toMap(map, beanObj, false, false);
    }

    /**
     * 转 map 忽略 null值
     * @param map
     * @param beanObj
     */
    public static void toMapIgnoreNull(Map<String, Object> map, Object beanObj){
        toMap(map, beanObj, true, false);
    }

    /**
     * 转 map null值设默认""
     * @param map
     * @param beanObj
     */
    public static void toMapNullDefVal(Map<String, Object> map, Object beanObj){
        toMap(map, beanObj, false, true);
    }

    private static void toMap(Map<String, Object> map, Object beanObj, boolean ignoreNull, boolean nullDefVal){
        List<Field> fields = getAllFields(beanObj);
        for (Field field : fields) {
            if(field.getName().equals("serialVersionUID")) //排除序列化常量
                continue;
            Object val = Reflections.getFieldValue(beanObj, field.getName());
            if(val != null){
                if(val instanceof Date)
                    val = DateUtils.dateToString((Date)val, "yyyy-MM-dd HH:mm:ss");
            }else{
                if(ignoreNull)
                    continue;
                else if(nullDefVal)
                    val = "";
            }
//            System.out.println(field.getName() + " = "+ val);
            map.put(field.getName(), val);
        }
    }

    //获取 所有字段
    private static List<Field> getAllFields(Object obj) {
        String cacheKey = obj.getClass().getName();
        if(CACHE.containsKey(cacheKey))
            return CACHE.get(cacheKey);
        List<Field> fieldList = new ArrayList();
        Class tmpClass = obj.getClass();
        while (tmpClass != null) {
            fieldList.addAll(Arrays.asList(tmpClass.getDeclaredFields()));
            tmpClass = tmpClass.getSuperclass();
        }
        CACHE.put(cacheKey, fieldList);
        return fieldList;
    }
}

Guess you like

Origin blog.csdn.net/LC_Liangchao/article/details/121835386