使用JSP實現簡易的SQL報表

來源:互聯網
上載者:User

這個內容也是根據企業學員的要求準備的. 其實這個小項目是剛畢業時候做的, 很多時候我們希望執 行下面的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;
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.