hibernate中把查询出来的集合封装为对象集合

public static List objectToList(List obj, Class clazz) throws Exception {
		List list = new ArrayList();
		for (Object result : obj) {
			int i = 0;
			// 获取结果集中每条记录的数据
			Object[] values = (Object[]) result;
			// 通过对象属性进行数据注入
			Field[] f = clazz.getDeclaredFields();
			Object o = clazz.newInstance();
			for (Field field : f) {
				char c = field.getName().charAt(0);
				c -= 32;
				String mname = c + field.getName().substring(1);
				mname = "set" + mname;
				Class<?> type = field.getType();
				Method md = clazz.getMethod(mname, type);
				if (i < values.length) {
					String value = values[i].toString().trim();
						
					if (type == String.class) {
						md.invoke(o, values[i] != null ? value
								: null);

					} else{
						
						if (type == Integer.class) {
							md.invoke(o,Integer.valueOf(value));
	
						} else if (type == Date.class) {
							DateTimeFormat format = (field
									.getAnnotation(DateTimeFormat.class));
							SimpleDateFormat sdf = new SimpleDateFormat(
									format.pattern());
							md.invoke(o,sdf.parse(value) );
	
						} else if (type == BigDecimal.class) {
							md.invoke(o, new BigDecimal(value));
	
						} else if (type == Long.class) {
							md.invoke(o,Long.parseLong(value));
	
						} else if (type == Short.class) {
							md.invoke(o,Short.parseShort(value));
	
						}
					}
				}
				i++;
			}
			list.add(o);
		}
		return list;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值