<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    JasperReport與hibernate結合使用

    Posted on 2007-02-06 12:31 dennis 閱讀(3113) 評論(1)  編輯  收藏 所屬分類: java
    花了兩天時間,終于把jasperreport與項目中使用的hibernate結合使用.最新版本的ireport支持HQL查詢,可以在 ireport里面寫HQL語句查詢并設計好報表.需要注意的是把hibernate.cfg.xml包括進classpath!!(菜單options ->classpath進行設置)給張圖:

    test2.jpg

    設計好報表之后編譯成jasper文件,在servlet中調用,我們需要實現自己的hibernate datasource:

    public class HibernateQueryResultDataSource implements JRDataSource {

    ?private String[] fields;

    ?private Iterator iterator;

    ?private Object currentValue;

    ?public HibernateQueryResultDataSource(List list, String[] fields) {
    ??this.fields = fields;
    ??this.iterator = list.iterator();
    ?}

    ?public Object getFieldValue(JRField field) throws JRException {
    ??Object value = null;
    ??int index = getFieldIndex(field.getName());
    ??if (index > -1) {
    ???Object[] values = (Object[]) currentValue;
    ???value = values[index];
    ??}
    ??return value;
    ?}

    ?public boolean next() throws JRException {
    ??currentValue = iterator.hasNext() ? iterator.next() : null;
    ??return (currentValue != null);
    ?}

    ?private int getFieldIndex(String field) {
    ??int index = -1;
    ??for (int i = 0; i < fields.length; i++) {
    ???if (fields[i].equals(field)) {
    ????index = i;
    ????break;
    ???}
    ??}
    ??return index;
    ?}

    }

    此類構造函數需要兩個參數,查詢結果的list以及查詢的所有屬性名(這些屬性名必須和報表界面的field名一致)

    ,使用方式如下:

    1.導出pdf:

    File reportFile = new File(getServletContext().getRealPath(
    ????"/reports/" + queryResult.getReportFileName() + ".jasper"));

    ??HibernateQueryResultDataSource dataSource = new HibernateQueryResultDataSource(
    ????queryResult.getList(parameters), queryResult.getFields());
    ??if (reportType.equals("pdf") || reportType.equals("")) {
    ???try {
    ????byte[] bytes = JasperRunManager.runReportToPdf(reportFile
    ??????.getPath(), null, dataSource);
    ????response.setContentType("application/pdf");
    ????response.setContentLength(bytes.length);
    ????ServletOutputStream ouputStream = response.getOutputStream();
    ????ouputStream.write(bytes, 0, bytes.length);
    ????ouputStream.flush();
    ????ouputStream.close();

    ???} catch (Exception e) {
    ????e.printStackTrace();
    ???}
    ??}

    2.導出excel,需要把poi-2.0-final-20040126.jar放進web的lib里:

    try {

    ????JasperPrint print = JasperFillManager.fillReport(
    ??????new FileInputStream(reportFile), null, dataSource);
    ????// JRXlsExporter t=null;
    ????JRXlsExporter jRXlsExporter = new JRXlsExporter();
    ????ByteArrayOutputStream xlsReport = new ByteArrayOutputStream();
    ????jRXlsExporter.setParameter(JRExporterParameter.JASPER_PRINT,
    ??????print);
    ????jRXlsExporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
    ??????xlsReport);
    ????jRXlsExporter
    ??????.setParameter(
    ????????JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
    ????????Boolean.TRUE);
    ????jRXlsExporter.setParameter(
    ??????JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,
    ??????Boolean.TRUE);
    ????// jRXlsExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,ReportsConstants.bankDetailsHtml);

    ????// jRXlsExporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,
    ????// Boolean.TRUE);

    ????jRXlsExporter.exportReport();
    ????byte[] bytes = xlsReport.toByteArray();

    ???
    ????response.setContentType("application/vnd.ms-excel");
    ????response.setContentLength(bytes.length);
    ????xlsReport.close();
    ????OutputStream ouputStream = response.getOutputStream();
    ????ouputStream.write(bytes, 0, bytes.length);
    ????ouputStream.flush();
    ????ouputStream.close();

    ???} catch (Exception e) {
    ????e.printStackTrace();
    ???}


    評論

    # re: JasperReport與hibernate結合使用  回復  更多評論   

    2008-05-26 09:41 by wanglijun
    我不知道那里配置問題的文件,在iReport使終找不到Hibarnate的映射文件。能不能給我一點資料。我的E-mail是:czwangli88@126.com。Thank you
    主站蜘蛛池模板: 日韩电影免费在线观看网址| 狼人大香伊蕉国产WWW亚洲| 国产免费高清69式视频在线观看| 四虎永久精品免费观看| 在线观看亚洲免费视频| 日韩在线免费电影| 美女羞羞免费视频网站| 亚洲XX00视频| a级毛片在线免费看| 五月天网站亚洲小说| 无码少妇精品一区二区免费动态| 久久久久久久久亚洲| 国产h肉在线视频免费观看| 亚洲免费在线视频观看| 四虎成人免费大片在线| 国产成人不卡亚洲精品91| 亚洲中文字幕伊人久久无码| 成人爽a毛片免费| 亚洲最大的视频网站| 午夜时刻免费入口| 免费精品国产自产拍在线观看| 久久亚洲中文字幕精品一区四| 丁香花在线视频观看免费| 亚洲黄色免费网站| 永久黄网站色视频免费观看| 丰满妇女做a级毛片免费观看| 久久久久亚洲AV成人无码网站 | 又长又大又粗又硬3p免费视频| 亚洲乱码国产一区网址| 久久久久久AV无码免费网站| 男人天堂2018亚洲男人天堂| 亚洲成AⅤ人影院在线观看| 免费国产成人α片| 亚洲youwu永久无码精品| 亚洲综合伊人久久大杳蕉| 在线日本高清免费不卡| 久久久久亚洲AV无码去区首 | 亚洲色图在线观看| 全免费a级毛片免费看不卡| 久久99久久成人免费播放| 亚洲另类图片另类电影|