码迷,mamicode.com
首页 > Web开发 > 详细

Hibernate 中setResultTransformer使用

时间:2017-08-16 11:40:44      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:creates   operation   find   print   contact   sql语句   i++   eof   name   

在使用hibernate框架,查询数据库多张表或者单张表的某几个需要的字段数据时,往往只能通过sql语句配合setResultTransformer将查询到的数据封装到一个map集合中,再将map集合放入list中返回数据。

示例:

控制层:查询还款明细,还款单号、流水号、还款人、还款日期、还款金额//查询还款明细,还款单号、流水号、还款人、还款日期、还款金额
List<Map<String,Object>> list2 = receivableService.findContactwriteoffByBillId(billId);
System.out.println("list2的大小:"+list2);
System.out.println("list2的大小:"+list2.size());
JSONObject jsonTotal2 = new JSONObject();
JSONArray jsonArray2 = new JSONArray();
if(list2.size() != 0){	
  for (int i = 0; i < list2.size(); i++) {
								
	Object fBillno =list2.get(i).get("fBillno");
	Object banktransactionserialno =list2.get(i).get("banktransactionserialno");
	Object remitoutbankaccountname =list2.get(i).get("remitoutbankaccountname");
	Object operationdatetime =list2.get(i).get("operationdatetime");
	Object amount =list2.get(i).get("amount");				
				
	JSONObject jsonObject2 = new JSONObject();
				
	jsonObject2.put("fBillno", fBillno);
	jsonObject2.put("banktransactionserialno", banktransactionserialno);
	jsonObject2.put("remitoutbankaccountname", remitoutbankaccountname);
	jsonObject2.put("operationdatetime", operationdatetime);
	jsonObject2.put("amount", amount);
	jsonArray2.add(jsonObject2);
								
	jsonTotal2.put("name", "还款明细");
	jsonTotal2.put("options", jsonArray2);				
							
} 

 service层查询数据

//查询还款明细,还款单号、流水号、还款人、还款日期、还款金额CONTACTWRITEOFF
@Override
public List<Map<String, Object>> findContactwriteoffByBillId(String billId) {
String sql = "SELECT ff.`billno` fBillno,ff.`banktransactionserialno`,ff.`remitoutbankaccountname`,ff.`operationdatetime`,ff.`amount` "
				      +" FROM  fin_contactwriteoff ff WHERE ff.`csbill` =‘"+billId+"‘";
				
	Query query = this.getSession().createSQLQuery(sql);

	query.setResultTransformer(new ResultTransformer() {
		private static final long serialVersionUID = 1L;

		public Object transformTuple(Object[] val, String[] arg1) {
			Map<String,Object> m = new HashMap<String,Object>();	
			m.put("fBillno", val[0]);
			m.put("banktransactionserialno", val[1]);
			m.put("remitoutbankaccountname",  val[2]);
			m.put("operationdatetime", val[3]);
			m.put("amount", val[4]);
			return m;
		}
		@Override
		public List transformList(List arg0) {
			return arg0;
		}
	});
	List<Map<String,Object>> list = query.list();
	return list;
	}

  在控制层查询到的数据做个封装返回到前端即可

Hibernate 中setResultTransformer使用

标签:creates   operation   find   print   contact   sql语句   i++   eof   name   

原文地址:http://www.cnblogs.com/guzhou-ing/p/7371846.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!