国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

兩個相似類屬性快速復制

2019-11-08 19:51:27
字體:
來源:轉載
供稿:網友

問題描述

系統中部分信息為Long類型,java中Long的精度為264-1,而js在64位機器上為253-1,32位機器上為231-1。因此利用js獲取Long類型的值導致數據不準確。

解決思路

將Long類型轉換為String類型再傳遞給js,而該屬性常為一個DO,因此需要設計與其對應的VO(將DO中的Long類型轉為String)用于傳遞給js。

接下來就是將DO中的值復制給VO即可。

兩個類復制

使用BeanCopier類來完成兩個類的復制,可以將其包裝成一個專門用來類復制的工具類,代碼如下:

package com.utils; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import net.sf.cglib.beans.BeanCopier; import net.sf.cglib.core.Converter; public class PRopertiesCopyUtil { private static Map<String, BeanCopier> beanCopierMap = new ConcurrentHashMap<String, BeanCopier>(); public static void copyProperties(Object source, Object target, Converter converter) { boolean needConverter = false; if (converter != null) { needConverter = true; } BeanCopier copier = generateCopier(source, target, needConverter); copier.copy(source, target, converter); } private static BeanCopier generateCopier(Object source, Object target, boolean needConverter) { String beanKey = generateKey(source.getClass(), target.getClass()); if (!beanCopierMap.containsKey(beanKey)) { BeanCopier copier = BeanCopier.create(source.getClass(), target.getClass(), needConverter); beanCopierMap.put(beanKey, copier); return copier; } else { return beanCopierMap.get(beanKey); } } private static String generateKey(Class<? extends Object> class1, Class<? extends Object> class2) { return class1.toString() + class2.toString(); } }

如用戶領域模型UserDO以及與之對應的需要前端展示的UserVO,代碼使用:

若兩個類中類型完全相同,則不需要轉換(converter)。PropertiesCopyUtil.copyProperties(userDO, userVO,null);若兩個類中類型部分需要轉換,則需要實現轉換(converter)。

userDO中的id類型在userVO中為String類型,則userDO復制到userVO調用方式如下:

PropertiesCopyUtil.copyProperties(userDO, userVO, new Converter(){ @Override public Object convert(Object value, Class target, Object context) { if ("setId".equals(context) && value != null) { return value.toString(); } return value; } });
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永嘉县| 连州市| 东阳市| 卢湾区| 青田县| 十堰市| 五原县| 安龙县| 汝州市| 定陶县| 通城县| 荆门市| 台南县| 天全县| 廊坊市| 延边| 大城县| 长海县| 视频| 苍梧县| 凭祥市| 长海县| 宜黄县| 元朗区| 贺兰县| 麦盖提县| 万州区| 万安县| 新平| 富蕴县| 偏关县| 包头市| 铅山县| 黔江区| 吉安市| 三河市| 青田县| 永吉县| 平江县| 洛扎县| 广河县|