JasperReport學習筆記8-JasperReport和Hibernate,Struts的整合

1.JasperReport與Hibernate的整合 

更改JRXML文件 
queryString標籤裏面加一個屬性language="hql",然後裏面就不用SQL語句了,寫HQL 

Xml代碼  收藏代碼
  1. <queryString language="hql">  
  2. <![CDATA[from Aircraft aircraft where country = $P{countryCode} 
  3. order by aircraft.id]]>  
  4. </queryString>  

JRXML文件裏面的field是HQL語言查出來的字段 

Hibernate配置文件和DOJO類配置文件都一樣,不做更改,而在業務LOGIC上有小的改動 

Java代碼  收藏代碼
  1. //輸出流  
  2. ServletOutputStream servletOutputStream =  
  3. response.getOutputStream();  
  4. //輸入流  
  5. InputStream reportStream = getServlet().getServletConfig()  
  6. .getServletContext().getResourceAsStream("xxxx/xxxx.jasper");  
  7. //設格式爲PDF文件  
  8. response.setContentType("application/pdf");  
  9. //Session的創建不變  
  10. SessionFactory sessionFactory = new Configuration().configure().  
  11. buildSessionFactory();  
  12. Session session = sessionFactory.openSession();  
  13. //要在Map裏面放入Session  
  14. Map parameterMap = new HashMap();  
  15. parameterMap.put(JRHibernateQueryExecuterFactory.PARAMETER_  
  16. HIBERNATE_SESSION, session);  
  17.   
  18. //使用JasperFileManager的這個方法,生成jprint文件,如果在WEB裏面,可以不生成  
  19. //JasperFillManager.fillReportToFile("/xxx/xxxx.jasper","/xxx/xxx.jprint",session);  
  20. //輸出PDF流到WEB頁  
  21. JasperRunManager.runReportToPdfStream(reportStream,  
  22. servletOutputStream, parameterMap);  
  23. session.close();  
  24. servletOutputStream.flush();  
  25. servletOutputStream.close();  
  26. return mapping.getInputForward();  


就是在生成jprint文件或JasperPrint對象的時候,把JRHibernateQueryExecuterFactory.PARAMETER_ 
HIBERNATE_SESSION裏面的值設爲session 


轉載自:http://langhua9527.iteye.com/blog/404097

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章