一、BeanMap
util用例
package cc.ash.mvc.util; import org.springframework.cglib.beans.BeanMap; import java.util.*; public class BeanMapUtil<T> { /** * 將屬性鍵值對map 轉為 對象 */ public T map2Bean(Map map, T bean) { BeanMap beanMap = BeanMap.create(bean); beanMap.putAll(map); return bean; } /** * 將屬性鍵值對map 轉為 對象 */ public T map2Bean(Map map, Class clz) throws IllegalAccessException, InstantiationException { T t = (T) clz.newInstance(); return map2Bean(map, t); } /** * 將對象 轉為屬性鍵值對map */ public Map bean2Map(T bean) { BeanMap beanMap = BeanMap.create(bean); Map map = new HashMap(); for(Iterator itKey = beanMap.keySet().iterator(); itKey.hasNext();) { Object key = itKey.next(); map.put(key, beanMap.get(key)); } return map; } /** * 將集合對象 轉為屬性鍵值對map集合 */ public List<Map> beans2Maps(List<T> list) { if(list == null || list.isEmpty()) { return null; } else { final List<Map> maps = new ArrayList<>(list.size()); list.forEach(t -> maps.add(bean2Map(t))); return maps; } } /** * 將屬性鍵值對map集合 轉為 對象集合 */ public List<T> maps2Bean(List<Map> maps, Class clz) throws IllegalAccessException, InstantiationException { BeanMap beanMap; T bean; List<T> list = new ArrayList<>(); for (Map map : maps) { bean = (T) clz.newInstance(); beanMap = BeanMap.create(bean); beanMap.putAll(map); list.add(bean); } return list; } }
二、json
可識別大小寫下划線等,名稱一致即可。不需要數據類型強制對應。(eg: BigInteger -> long)
jpa 查詢返回Map 或List<Map>,大概率出現類型轉換異常。可使用fastjson將map轉為json,再將json解析為所需對象。
需要進一步處理的字段可添加注解
@JSONField(deserialize = false) 處理后調用setter設置。
當tinyint自動轉換為boolean類型等,可酌情使用 CONCAT(field, '') 或者ROUND(field, 0)處理。
...