上述返回值是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;
}