有不少工具类给bean填充值。但是填充,很多都是只能填充到当前类的对象。经过需求修改,做了个工具类:

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import com.iafclub.baseTools.vo.PageResultVo;
import com.iafclub.baseTools.vo.PageVo;
/**对象填充类
*
* @author 陈惟鲜
* @date 2016年11月10日 下午12:51:04
*
*/
public class MyCollectionUtil {
/**map转换为对象
*
* @param map map信息
* @param beanClass 对象类
* @return
* @throws Exception
* @author 陈惟鲜
* @date 2016年4月11日 上午11:05:40
*/
public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {
if (map == null){
return null;
}
Object obj = beanClass.newInstance();
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
int mod = field.getModifiers();
if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){
continue;
}
field.setAccessible(true);
field.set(obj, map.get(field.getName()));
}
return obj;
} /**map转换为对象,包括对象父类全部赋值
*
* @param map map信息
* @param beanClass 对象类
* @return
* @throws Exception
* @author 陈惟鲜
* @date 2016年4月11日 上午11:05:40
*/
public static Object mapToObjectAll(Map<String, Object> map, Class<?> beanClass) throws Exception {
if (map == null){
return null;
}
Object obj = beanClass.newInstance();
// 获取所有父类的信息定义
for(Class<?> clazz = obj.getClass(); clazz != Object.class ; clazz = clazz.getSuperclass()) {
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
int mod = field.getModifiers();
if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){
continue;
}
field.setAccessible(true);
field.set(obj, map.get(field.getName()));
}
} return obj;
} /**对象转换为map
*
* @param obj
* @return
* @throws Exception
* @author 陈惟鲜
* @date 2016年4月11日 上午11:05:59
*/
public static Map<String, Object> objectToMap(Object obj) throws Exception {
if(obj == null){
return null;
}
Map<String, Object> map = new HashMap<String, Object>();
Field[] declaredFields = obj.getClass().getDeclaredFields();
for (Field field : declaredFields) {
field.setAccessible(true);
map.put(field.getName(), field.get(obj));
}
return map;
} /**对象转换为map,b
*
* @param obj
* @return
* @throws Exception
* @author 陈惟鲜
* @date 2016年4月11日 上午11:05:59
*/
public static Map<String, Object> objectToMapAll(Object obj) throws Exception {
if(obj == null){
return null;
}
Map<String, Object> map = new HashMap<String, Object>();
for(Class<?> clazz = obj.getClass(); clazz != Object.class ; clazz = clazz.getSuperclass()) {
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
map.put(field.getName(), field.get(obj));
}
}
return map;
} public static void main(String[] args) {
PageResultVo pageResultVo = new PageResultVo();
PageVo pageVo = new PageVo();
pageVo.setCount(50);
pageVo.setPageSize(500);
List<PageVo> resultList = new ArrayList<PageVo>();
resultList.add(pageVo);
pageResultVo.setPage(pageVo);
pageResultVo.setResultList(resultList);
try {
Map map = objectToMap(pageResultVo);
System.out.println(map);
PageVo pageVo2 = (PageVo) mapToObject(map, PageVo.class);
System.out.println(pageVo2.getPageSize());
} catch (Exception e) {
e.printStackTrace();
}
} }

最新文章

  1. 【项目经验】 Html Select 遇上 Easyui
  2. 【转载】MySQL性能优化的最佳20+条经验
  3. 【php学习】数组操作
  4. OC12_自动释放池
  5. Yii处理流程
  6. eclipse-android-activity_main/fragment_main文件处理
  7. mysql之6备份恢复
  8. MYSQL高可用(HA)随想
  9. 自定义的UIAlertView不能在iOS7上正常显示
  10. 聊一聊PV和并发、以及计算web服务器的数量的方法【转】
  11. github如何添加ssh
  12. 浅析C#中单点登录的原理和使用
  13. C# socket通讯 send方法记录
  14. c# -- 解决vs使用本地iis运行项目支持局域网访问的问题(附防火墙端口开放步骤)
  15. Mybatis的mapper文件中$和#的用法及区别详解
  16. Linux中Nginx安装与配置详解 test(待整理 补全)
  17. vim:关于映射和跳出括号
  18. Oracle索引实现方式
  19. ARP级ping命令:arping
  20. ROS naviagtion analysis: costmap_2d--Costmap2DROS

热门文章

  1. html5 外链式实现加减乘除
  2. 笔记-5:mysql数据更新
  3. MongoDB 关系运算符及统计个数及跳过分页
  4. Eclipse一些技巧
  5. Scratch与物理&#183;天文:模拟中国嫦娥探月工程,探索月球的背面!
  6. js中WebSocket
  7. shell脚本使用记录
  8. 关闭google默认打开翻译提醒
  9. svnkit 用java 操作 svn
  10. Ubuntu 文件和目录常用命令