/**
*
* Discription : 将查询出来的数据转换为Map集合,但前提是只能为一条数据 ,它的key为其查询的字段.
* @param sql
* @return
* Map<String,Object>
* @date 2013-9-29 下午1:20:50
* @throws
* @author : shendx
*/
@Override
public Map<String, Object> getQueryResultToMap(final String sql) {
return (Map<String, Object>) getHibernateTemplate().execute(new HibernateCallback() {
@Override
public Object doInHibernate(Session session) throws HibernateException,
SQLException {
Query query = session.createSQLQuery(sql);
return (Map)query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).uniqueResult(); //返回值为map集合 且为唯一值(只能返回一条数据)
}
});
}
/**
*
* Discription : 将sql中的全部数据查出来,返回值为一个List<Map<String, Object>>具体用法见
* @see #getQueryResultToMap(String)
* @param sql
* @return
* List<Map<String,Object>>
* @date 2013-9-29 下午1:23:20
* @throws
* @author : shendx
*/
@Override
public List<Map<String, Object>> getQueryResultToListMap(final String sql) {
return (List<Map<String, Object>>) getHibernateTemplate().execute(new HibernateCallback() {
@Override
public Object doInHibernate(Session session) throws HibernateException,
SQLException {
Query query = session.createSQLQuery(sql);
return (List)query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list();
}
});
}
函数 getQueryResultToMap 只能查询一条数据,否则会报错
例如:
select t.id,t.name from tableName t; 那么它在map中的key为id 和name。
当然也可以 select * from tableName;
另外值得注意的是,经过我本地测试如果取别名是报错