Jasper中数据注入方式分享

使用Jasper生成JasperPrint方式有多种,现与大家分享如下,详见代码

 

private JasperPrint createJasperPrint(String createFun,Map map){
        //默认采用sql方式进行
        if (createFun.equals("sql")){
            PreparedStatement pStmt = null;
            ResultSet rs = null;
           
            SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
            Session session = sessionFactory.openSession();
            try {
                pStmt = session.connection().prepareStatement(this.getJasperSQL());
                rs = pStmt.executeQuery();
            } catch (HibernateException e) {
                log.error("createJasperPrint is error.....");
                e.printStackTrace();
            } catch (SQLException e) {
                log.error("createJasperPrint is error.....");
                e.printStackTrace();
            }
           
            JRResultSetDataSource ds = new JRResultSetDataSource(rs);
           
            try {
                return JasperFillManager.fillReport(jasperReport, map,ds);
            } catch (JRException e) {
                log.error("createJasperPrint is error.....");
                e.printStackTrace();
            }finally{
                try {
                    session.close();
                } catch (HibernateException ex) {
                    log.error("createJasperPrint session close is error.....");
                }
            }

        }else if(createFun.equals("javabean")){
            JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(this.jasperList);
           
            try {
                return JasperFillManager.fillReport(jasperReport, map,dataSource);
            } catch (JRException e) {
                log.error("createJasperPrint session close is error.....");
                e.printStackTrace();
            }
        }else if(createFun.equals("hql")){
            SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
            Session session = sessionFactory.openSession();
           
            JRHibernateQueryExecuterFactory jrh_qef = new JRHibernateQueryExecuterFactory();
   
            map.put(JRHibernateQueryExecuterFactory.PARAMETER_HIBERNATE_SESSION, session);
           
            JRDesignQuery query = new JRDesignQuery();
            query.setText(this.getJasperHQL());
       
            JRDesignDataset jasperDataset = new JRDesignDataset(new Boolean(true));
            jasperDataset.setQuery(query);
                   
            JRHibernateQueryExecuter jrh_qe;
            try {
                jrh_qe = (JRHibernateQueryExecuter) jrh_qef.createQueryExecuter(jasperDataset, map);
                JRHibernateListDataSource ds = new JRHibernateListDataSource(jrh_qe, new Boolean(true), 10);
                return JasperFillManager.fillReport(jasperReport, map,ds);
            } catch (JRException e) {
                log.error("createJasperPrint session close is error.....");
                e.printStackTrace();
            }   
        }
        return null;
    }

 

   注:其中hql方式目前尚未测试通过,暂时没时间研究。使用javabean方式比较方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值