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实现map和object互转的三种方法

文章转载自 java实现map和object互转的三种方法 /** * 使用org.apache.commons.beanutils进行转换 */ class A { ...

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

Map转换Object、Object转换Map、List转换List、List转换List、对象拷贝

java Map与Object互转

/*** * map转换成对象 */ public static Object mapToObject(Map map, Class beanClass) ...

java怎么将json字符串转换成list,map,object等

java中似乎没提供一个将json字符串转换成对应的list或者mop

Java 中 List<Map<String,Object>> 转换 List<javaBean> 详解

1.Javabean的实体类/** * 实体类 * @author suny * @date 2017-7-4 * * desc: * */ public class Person...

java中Array/List/Map/Object与Json互相转换详解

JSON(JavaScript Object Notation): 是一种轻量级的数据交换格式 一、JSON建构有两种结构:对象和数组 1、对象:对象在js中表示为“{}”扩起来的内容,数...

利用java反射机制实现List<Map<String, Object>>转化为List<JavaBean>

BEGIN; 最近在用hibernate做项目,由于后续的业务功能比较多,然后框架原设计没有使用到一对多、一对一等特性,(艹TA妹)没办法,只能用原生sql语句获得需要的结果集。但是返回过来...

java中Array/List/Map/Object与Json互相转换详解

JSON(JavaScript Object Notation): 是一种轻量级的数据交换格式 一、JSON建构有两种结构:对象和数组 1、对象:对象在js中表示为“{}”扩起来的内容,数...

java list<Map<String,Object>>排序

做开发一般排序都是放在sql语句中,但是有很多字段没法用一句sql同时查出来,有的数据在mysql 有的数据在mongDB中,查询返回一个列表还需要排序,看着就蒙了,于是乎在查询了java排序的方法后...
  • lemo_t
  • lemo_t
  • 2015-12-11 17:31
  • 1216

java中Array/List/Map/Object与Json互相转换详解

转自:http://blog.csdn.net/aa4790139/article/details/8587208 JSON(JavaScript Object Notation): 是一种轻量...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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