幾種hibernate原生sql查詢返回值
阿新 • • 發佈:2019-01-04
1.---SELECT new map(main.id AS id3333,main.startdate AS startdate) from WeekData main
上述返回值是List<Map<String, Object>>---map的key為as後面的別名,value為實際查詢結果
2.---SELECT new map(main.id,main.startdate) from WeekData main
上述返回值是List<Map<String, Object>>---map的key為語句中的序號(從0開始),value為實際查詢結果
總結1和2 -- 如果部分使用alias,部分不使用,則使用了alias的將使用alias作為key,沒有使用的則仍然使用序號代替,
3.---String hql=“select s.name,s.id from Student s”;
上述返回值是List<Object[]>;----object陣列是返回列name和id這樣的構成的陣列
4.---public class Department(Department d, Integer employeeSize)
SELECT new Department(department, count(employee.id)) FROM .....
5.---SELECT new list(main.id AS id3333,main.startdate AS startdate) from WeekData main
--把所有查詢出的列放進一個list(類似3的Object[])
上述返回值是List<Map<String, Object>>---map的key為as後面的別名,value為實際查詢結果
2.---SELECT new map(main.id,main.startdate) from WeekData main
上述返回值是List<Map<String, Object>>---map的key為語句中的序號(從0開始),value為實際查詢結果
總結1和2 -- 如果部分使用alias,部分不使用,則使用了alias的將使用alias作為key,沒有使用的則仍然使用序號代替,
3.---String hql=“select s.name,s.id from Student s”;
上述返回值是List<Object[]>;----object陣列是返回列name和id這樣的構成的陣列
4.---public class Department(Department d, Integer employeeSize)
SELECT new Department(department, count(employee.id)) FROM .....
5.---SELECT new list(main.id AS id3333,main.startdate AS startdate) from WeekData main
--把所有查詢出的列放進一個list(類似3的Object[])
返回值[["005e8a63a01249a1aec0abba8d6cc5b6!WeekData",1453824000000],["00a01540d6684344ad76692fc11ac33e!WeekData",1442937600000]]
6.--利用hibernateTemplate執行sql
比如 map.put("year", year[]) ---> in (:year) ---> 此時需要判斷map的value值obj然後相應的setParameterList和setParameter,,if(obj instanceof Collection<?>){ query.setParameterList(key, (Collection<?>)obj);
public List queryBySql(final String queryString, final Map<String, Object> paramsMap) { logger.info("queryBySql sql == " + queryString); logger.info("paramsMap = " + ReflectionToStringBuilder.toString(paramsMap, ToStringStyle.MULTI_LINE_STYLE)); List list = (List) this.getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(final Session session) throws HibernateException, SQLException { Query query = session.createSQLQuery(queryString) .setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); if (paramsMap != null) { for (String key : paramsMap.keySet()) { Object obj = paramsMap.get(key); if(obj instanceof Collection<?>){ query.setParameterList(key, (Collection<?>)obj); }else if(obj instanceof Object[]){ query.setParameterList(key, (Object[])obj); }else{ query.setParameter(key, obj); } } } return query.list(); } }); return list; }