DozerBeanMapper + 对象转Map方法
1、简介
dozer是一种JavaBean的映射工具,类似于apache的BeanUtils。但是dozer更强大,它可以灵活的处理复杂类型之间的映射。不但可以进行简单的属性映射、复杂的类型映射、双向映射、递归映射等,并且可以通过XML配置文件进行灵活的配置。
2、准备
现在开始就小试一下。
首先,需要下载jar包,
dozer.jar :http://dozer.sourceforge.net/downloading.html
还需要slf4j.jar,commons-lang.jar,commons-beanutil.jar, commons-loggin.jar
http://lishaorui.iteye.com/blog/1151513
- import com.google.common.collect.Lists;
- import java.util.Collection;
- import java.util.Iterator;
- import java.util.List;
- import org.dozer.DozerBeanMapper;
- public class BeanMapper
- {
- private static DozerBeanMapper dozer = new DozerBeanMapper();
- /**
- * 构造新的destinationClass实例对象,通过source对象中的字段内容
- * 映射到destinationClass实例对象中,并返回新的destinationClass实例对象。
- *
- * @param source 源数据对象
- * @param destinationClass 要构造新的实例对象Class
- */
- public static <T> T map(Object source, Class<T> destinationClass)
- {
- return dozer.map(source, destinationClass);
- }
- public static <T> List<T> mapList(Collection sourceList, Class<T> destinationClass)
- {
- List destinationList = Lists.newArrayList();
- for (Iterator i$ = sourceList.iterator(); i$.hasNext(); ) { Object sourceObject = i$.next();
- Object destinationObject = dozer.map(sourceObject, destinationClass);
- destinationList.add(destinationObject);
- }
- return destinationList;
- }
- /**
- * 将对象source的所有属性值拷贝到对象destination中.
- *
- * @param source 对象source
- * @param destination 对象destination
- */
- public static void copy(Object source, Object destinationObject)
- {
- dozer.map(source, destinationObject);
- }
- }
使用:
- SmIaasQuotaV result = null;
- try {
- result = limitService.getLimitDetails(id,parentId);
- if(result != null){
- response.setData(BeanMapper.map(result, Map.class));
- response.setSuccess(true);
- }
- }
BeanMapper.map(result, Map.class)
转换为Map对象。
- public static <T> Map<String, T> toMap(Object target) {
- return toMap(target,false);
- }
- /**
- * 将目标对象的所有属性转换成Map对象
- *
- * @param target 目标对象
- * @param ignoreParent 是否忽略父类的属性
- *
- * @return Map
- */
- public static <T> Map<String, T> toMap(Object target,boolean ignoreParent) {
- return toMap(target,ignoreParent,false);
- }
- /**
- * 将目标对象的所有属性转换成Map对象
- *
- * @param target 目标对象
- * @param ignoreParent 是否忽略父类的属性
- * @param ignoreEmptyValue 是否不把空值添加到Map中
- *
- * @return Map
- */
- public static <T> Map<String, T> toMap(Object target,boolean ignoreParent,boolean ignoreEmptyValue) {
- return toMap(target,ignoreParent,ignoreEmptyValue,new String[0]);
- }
- /**
- * 将目标对象的所有属性转换成Map对象
- *
- * @param target 目标对象
- * @param ignoreParent 是否忽略父类的属性
- * @param ignoreEmptyValue 是否不把空值添加到Map中
- * @param ignoreProperties 不需要添加到Map的属性名
- */
- public static <T> Map<String, T> toMap(Object target,boolean ignoreParent,boolean ignoreEmptyValue,String... ignoreProperties) {
- Map<String, T> map = new HashMap<String, T>();
- List<Field> fields = ReflectionUtils.getAccessibleFields(target.getClass(), ignoreParent);
- for (Iterator<Field> it = fields.iterator(); it.hasNext();) {
- Field field = it.next();
- T value = null;
- try {
- value = (T) field.get(target);
- } catch (Exception e) {
- e.printStackTrace();
- }
- if (ignoreEmptyValue
- && ((value == null || value.toString().equals(""))
- || (value instanceof Collection && ((Collection<?>) value).isEmpty())
- || (value instanceof Map && ((Map<?,?>)value).isEmpty()))) {
- continue;
- }
- boolean flag = true;
- String key = field.getName();
- for (String ignoreProperty:ignoreProperties) {
- if (key.equals(ignoreProperty)) {
- flag = false;
- break;
- }
- }
- if (flag) {
- map.put(key, value);
- }
- }
- return map;
- }
DozerBeanMapper + 对象转Map方法的更多相关文章
- 一行代码将两个列表拼接出第三个列表(两个可迭代对象相加产生第三个可迭代对象)--map()方法
map()方法 map(func, *iterables) --> map object lambda方法: lambda 参数 :返回值 a = map(',7]) print(list(a ...
- java 对象转Map方法Demo
/** * 用于对Object进行解析并且转换成Map键值对的形式 * */ public class ObjectUtils { private static final String JAVAP ...
- 转化对象为map方法
言语不多,直接上代码. private Map<String, Object> introspect(Object obj) throws Exception { Map<Strin ...
- react第十单元(children的深入用法-React.Children对象上的方法)
第十单元(children的深入用法-React.Children对象上的方法) #课程目标 理解什么是children 掌握React.Children对象上的方法 #知识点 什么是children ...
- java中两个对象间的属性值复制,比较,转为map方法实现
package com.franson.study.util; import java.lang.reflect.InvocationTargetException; import java.lang ...
- 对象作为 map 的 key 时,需要重写 equals 方法和 hashCode 方法
对象作为 map 的 key 时,需要重写 hashCode 和 equals方法 如果没有重写 hashCode 方法,那么下面的代码示例会输出 null 我们首先定义一个对象:BmapPoint, ...
- JAVA中利用反射机制进行对象和Map相互转换的方法
JAVA的反射机制主要作用是用来访问对象的属性.方法等等.所以,JAVA中对象和Map相互转换可以利用JAVA的反射机制来实现.例子如下: 一.对象转Map的方法 public static Map& ...
- Jquery遍历筛选数组的几种方法和遍历解析json对象|Map()方法详解
Jquery遍历筛选数组的几种方法和遍历解析json对象|Map()方法详解 一.Jquery遍历筛选数组 1.jquery grep()筛选遍历数组 $().ready( function(){ v ...
- Java中将对象转换为Map的方法
将对象转换为Map的方法,代码如下: /** * 将对象转成TreeMap,属性名为key,属性值为value * @param object 对象 * @return * @throws Illeg ...
随机推荐
- The Best Path HDU - 5883 欧拉通路
图(无向图或有向图)中恰好通过所有边一次且经过所有顶点的的通路成为欧拉通路,图中恰好通过所有边一次且经过所有顶点的回路称为欧拉回路,具有欧拉回路的图称为欧拉图,具有欧拉通路而无欧拉回路的图称为半欧拉图 ...
- PAT Basic 1082
1082 射击比赛 本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军:谁差得最远,谁就是菜鸟.本题给出一系列弹洞的平面坐标(x,y),请你编写程序找出冠军和菜鸟.我们假设靶心在原 ...
- Android Studio中不能显示svn的上传下载两个图标同时version control为灰,不可点击
最近在接触Android Studio,涉及到svn的配置,因为是先安装的svn,后安装的Android Studio,后边同事告诉我, Android Studio 的SVN安装与其他IDE有很大差 ...
- HBase0.94.2-cdh4.2.0需求评估测试报告1.0之五
根据以上图分析得出以下结论: 1. 在上面的hbase配置下,顺序和随机写记录(每条记录1K),每写入86-87M(大小可配)左右数据生成一个磁盘文件(store file). 2. 在上面的hbas ...
- loj2027 「SHOI2016」黑暗前的幻想乡
矩阵树定理+模意义下整数高斯消元 #include <algorithm> #include <iostream> #include <cstring> #incl ...
- STW Family
序言 一次作业致使我们成为了一个团体,相聚即是缘分,让我们一起为STW绘制一幅完美的画卷,交一份满意的答卷. 这不是一个人的王者,是团队的荣耀. Team成员 队长:王筱哲 201631062220 ...
- 为什么要使用数据库连接池?以及用法(DBUtils)
看代码, from flask import Flask from db import POOL import pymysql app = Flask(__name__) app.secret_key ...
- K-means算法的优缺点
K-means算法的优缺点 优点:原理简单,实现容易 缺点: 收敛较慢 算法时间复杂度比较高 \(O(nkt)\) 不能发现非凸形状的簇 需要事先确定超参数K 对噪声和离群点敏感 结果不一定是全局最优 ...
- Pandas对多列进行升降序排列
df = pd.DataFrame(rows, columns = ["llx", "lly", "urx", "ury" ...
- PDO PDO_MYSQL MYSQLI MYSQL 的区别
MYSQL,MYSQLI 这两个扩展本身就是访问MYSQL数据库的驱动 PDO则是一个抽象层接口 向程序员提供可调用的API是由,MYSQL驱动.MYSQLI驱动,以及PDO来提供. PDO_MYSQ ...