這個內容也是根據企業學員的要求准備的. 其實這個小項目是剛畢業時候做的, 很多時候我們希望執 行下面的SQL/HQL然後得到一個HTML表格輸出:
輸入: select ID as 編號, NAME as 姓名, AGE as 年齡 from XXX
輸出:
編號 姓名 年齡要求是如果SQL變動, 仍然要顯示出來所有的別名字段信息和數據.
因為現在Hibernate用的比較廣泛, 所以優先考慮用Hibernate來實現, 結果發現如果是實體映射查詢 語句, 可以方便的用:List Query.getReturnAliases() 獲得別名, 然而我們知道查詢時有時候語句是很 復雜的, 不全是HQL, 這時候用SQLQuery的時候, 驚訝的提示這個方法尚未實現(最新版的Hibernate 3.3 是否實現尚未測試), 用的版本是Hibernate 3.2, 對應的代碼是:
DAO
/**
* 根據查詢語句返回結果, 並包含結果的列名
* @param hql
* @param args
* @return
*/
public List queryAllForReport( final String hql, final Object... args) {
List list = getHibernateTemplate().executeFind (new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
for(int i =0; i < args.length; i++) {
query.setParameter(i, args[i]);
}
List list = query.list();
list.add(0, query.getReturnAliases());
return list;
}
});
// Hibernate做count計算返回一般都是對象
return list;
}