/**
* 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;
}
}
Bean工具类
最新推荐文章于 2024-04-10 09:36:39 发布
这个Java工具类主要用于将Bean对象转换为Map,支持忽略null值和设置null值为默认字符串。方法包括对象转Map、List对象转List Map,以及按指定字段映射对象到Map,同时处理日期格式化。
摘要由CSDN通过智能技术生成