今天做项目用到了Hibernate 原生态sql查询,特此记录下。
第一种:返回List<Object[]>类型
public Object sqlQueryList(String sql) throws Exception { Session session = null; try{ session = this.getCurrentSession(); SQLQuery query = session.createSQLQuery(sql); return query.list(); }catch(Exception e){ throw e; }finally{ if(session != null ){ session.close(); } } }处理返回结果:
List<Object[]> list = (List<Object[]>) dao.sqlQueryList(sql); for(Object[] o:list){ ....... }
第二种: 返回List<map>
public List<Map> sqlQueryMap(String sql) throws Exception { Session session = null; try{ session = this.getCurrentSession(); SQLQuery query = session.createSQLQuery(sql); query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);//这里是关键 return query.list(); }catch(Exception e){ throw e; }finally{ if(session != null ){ session.close(); } } }处理返回结果:
List<Map> listmap= dao.sqlQueryMap(sql, new Object[]{}); for(int i=0; i<listmap.size(); i++){ Map<String,Object> map = listmap.get(i); ....... }