java之Object转Map

原创 2015年07月07日 20:20:04

原项目:

原来的项目中,持久化层符合了JPA规范,Hibernate实现的。后期的数据库优化中,用到了select new map。

代码中是这样写的:

	<span style="white-space:pre">	</span>/**
		 * hql1: hql语句
		 * 第一版查询: 查询结果返回的是list。但是list中存放的是Object数组
		 */
		String hql1 = "select h.name, h.address from Hotel h";
		Query query = session.createQuery(hql1);
		List list1 = query.list();
		
		/**
		 * hql2:hql语句
		 * 第二版查询: 查询结果返回的是list。但是list中存放的是Map。
		 * 		Map中: key是索引字段(0, 1, 2, 3...) value是查询的字段值(name, address)
		 * 		注意:key是字符串类型的,不是int类型
		 */
		String hql2 = "select new map(h.name, h.address) from Hotel h ";
		Query query = session.createQuery(hql);
		List<Map> list = query.list();
		
		for(Map hotel: list){
			String name = hotel.get("0");
			String address =hotel.get("1");
			System.out.println("name = " + name + ", address = " + address);
		}
		
		/**
		 * hql3:hql语句
		 * 第三版查询: 同第二版查询
		 * 			不同的地方是:key的索引字段是定义的别名(name, address)
		 */
		String hql3 = "select new map(h.name as name, h.address as address) from Hotel h";
		Query query = session.createQuery(hql);
		List<Map> list = query.list();
		
		for(Map hotel: list){
			String name = hotel.get("name");
			String address = hotel.get("address");
			System.out.println("name = " + name  + ", address = " + address);
		}


现项目:

现在的项目进行了重构,持久化层依然选择JPA规范,但是实现换成了EclipaseLink。

以上的查询返回类型是list。list中存放的是object数组。为了将Object转成map,手动封装了一个类进行转换。

<span style="white-space:pre">	</span>public List<Map> queryOutMap(){
		/**
		 * hql: hql语句
		 * 查询结果返回list,list中是Object数组
		 */		
		String hql = "select h.name,h.address from HotelGuest h where h.name =:name";
		Map map = new HashMap();
		map.put("name", "张三");
		
		Query query = getEntityManager().createQuery(hql);
		for(Serializable key: map.keySet()){
				query.setParameter((String)key, map.get(key));
		}			
		List result = query.getResultList();;
		
		/**
		 * 将查询的字段
		 * 注意:按hql语句中的顺序放到List中
		 */
		List fields = new ArrayList();
		String name = "name";
		String province = "province";
		fields.add(name);
		fields.add(province);
		
		//调用转换方法
		return convertToMap(fields, result);
		
	}
	/**
	 * 将查询结果转成Map
	 * @param fields
	 * @param result
	 * @return
	 */
	public List<Map> convertToMap(List fields, List result){
		List<Map> list = new ArrayList<Map>();
		for(int i=0;i<result.size();i++){
			Map map = new HashMap();
			Object[] obj = (Object[])result.get(i);
			for(int j=0;j<fields.size();j++){
				 map.put(fields.get(j), obj[j]);
			}
			list.add(map);
		}
		return list;
	}

以上核心就是讲Object转换乘Map。除了以上的方法外,还有其它的方法,可以借鉴:

http://www.open-open.com/code/view/1423280939826


java object互转Map的三种方法

原文:http://www.open-open.com/code/view/1423280939826 /** * 使用org.apache.commons.beanutils进行转换 ...
  • dcb_ripple
  • dcb_ripple
  • 2017年06月14日 16:56
  • 677

java实现map和Object互转

/** * 使用org.apache.commons.beanutils进行转换 */ class A { public static Object mapToO...
  • woshishui6501
  • woshishui6501
  • 2016年05月12日 11:19
  • 2532

java Obect 转map map 转Object 工具类

import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.math.BigDecimal; impo...
  • weitongyixun
  • weitongyixun
  • 2016年01月22日 10:15
  • 1983

Java对象转换(Map转换Object或者反转)

Map转换Object、Object转换Map、List转换List、List转换List、对象拷贝
  • niuch1029291561
  • niuch1029291561
  • 2016年10月20日 16:25
  • 2642

java 使用反射转换对象 Object to Map

Object to Map 转换的三种方法 就是把对象以及其对应的属性名 和属性值, 映射到一个Map中 import java.beans.BeanInfo; import java.bea...
  • hpf911
  • hpf911
  • 2014年05月08日 15:04
  • 9770

javaBean与Map<String,Object>相互转换

互转-1.为什么要实现javaBean与Map相互转换?" style="margin:0px; color:rgb(61,61,61); font-size:14px; line-height:20...
  • qq_34893326
  • qq_34893326
  • 2017年12月21日 16:21
  • 51

java中如何把hashmap转换成object数组

java中如何把hashmap转换成object数组 kevintian511 | 浏览 9730 次  2007-12-10 16:37 2015-06-22 22:50...
  • evilcry2012
  • evilcry2012
  • 2016年10月11日 11:42
  • 2527

java 用反射简单应用,将Object简单转换成map

转自:http://blog.csdn.net/tarrant1/article/details/10954633 [java] view plaincopy ...
  • gf771115
  • gf771115
  • 2015年09月15日 14:37
  • 2008

类型转化异常 Java Object转 int

Java中Object转化为int类型 页面间通过application 传值   application.getAttribute("coursecredit")返回的是一个object 类型 J...
  • gxftry1st
  • gxftry1st
  • 2014年03月04日 17:00
  • 4282

Json转map和List<Map<String,Object>>

List> listData=new ArrayList>(); Map map=new HashMap(); map.put("id", 123); listData.add(map); Gson ...
  • chenshuaining
  • chenshuaining
  • 2015年11月11日 13:35
  • 2414
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java之Object转Map
举报原因:
原因补充:

(最多只允许输入30个字)