帆软java代码程序获取数据集案例

一、新建java项目,导入对应的包

建议jdk版本不需要太高,1.8即可

必要的jar包

  • %FR_HOME%/lib
  • %FR_HOME%/server/lib
  • %FR_HOME%/webapps/webroot/WEB-INF/lib
  • jdk\lib\tools.jar

%FR_HOME% 指的你帆软安装的路径,,比如我的路径是D:\ruanjian\FineReport_10.0

 二、无参java程序案例

2.1 程序对应的包路径

2.2 java内容 

public class TestTableDataDemo extends SimpleTableData {
    /**
     * 初始化列头
     * @return
     */
    @Override
    public String[] initColumnNames() {
        return new String[]{"时间","分类", "金额"};
    }
    /**
     * 加载行列数据
     * @return
     */
    @Override
    public List<Object[]> loadData() {
        FineLoggerFactory.getLogger().info("帆软日志打印,开始加载数据");
        ArrayList<Object[]> valueList = new ArrayList();
        valueList.add(new Object[]{"2024-04","纸箱", 15});
        valueList.add(new Object[]{"2024-03","办公类", 22});
        valueList.add(new Object[]{"2024-02","礼品类", 99});
        valueList.add(new Object[]{"2024-01","电脑", 62});
        valueList.add(new Object[]{"2023-12","轮胎", 52});
        valueList.add(new Object[]{"2023-11","服装", 99});
        valueList.add(new Object[]{"2023-10","食品", 31});
        valueList.add(new Object[]{"2023-09","网络用品", 10});
        valueList.add(new Object[]{"2023-08","装修类", 555});
        valueList.add(new Object[]{"2023-07","清洁家具", 31});
        valueList.add(new Object[]{"2023-06","标签类", 80});
        valueList.add(new Object[]{"2023-05","香烟", 61});
        valueList.add(new Object[]{"2023-04","叉车", 74});
        valueList.add(new Object[]{"2023-03","保险", 87});
        valueList.add(new Object[]{"2023-02","承运商", 54});
        valueList.add(new Object[]{"2023-01","软件", 45});
        return valueList;
    }
}

 2.3 编译好的class代码迁移

 将编译好的class文件复制到%FR_HOME%/webapps/webroot/WEB-IN/classes路径下面,在这个文件夹下面需要创建和java项目路径一致的包(文件夹)

2.4 在帆软新建数据集

2.5 填充内容

 在图表添加对应字段

2.6 进行预览

 

 三、有参java程序案例

3.1 传递参数的关键代码

//[0]指的在帆软设置参数的位置
((ParameterProvider) (parameters.get().toArray())[0]).getValue().toString();

3.2 java内容

public class TestParamTableDataDemo extends SimpleTableData {

//    public static void main(String[] args) {
//        TestParamTableDataDemo demo = new TestParamTableDataDemo();
//        List<Object[]> s = demo.loadData();
//        System.out.println(s.toArray());
//    }

    /**
     * 初始化列名称,查询出的结果有多少列
     * 如果有多于的列,列内容为空
     *
     * @return
     */
    @Override
    public String[] initColumnNames() {
        String[] columnNames = new String[10];
        for (int i = 0; i < 10; i++) {
            columnNames[i] = "column#" + i;
        }
        return columnNames;
    }

    @Override
    public List<Object[]> loadData() {
        // 保存得到的数据库表名
        String tableName = ((ParameterProvider) (parameters.get().toArray())[0]).getValue().toString();
        String param1 = ((ParameterProvider) (parameters.get().toArray())[1]).getValue().toString();
        FineLoggerFactory.getLogger().info("传递过来的参数为:tableName:" + tableName + " param1:" + param1);
        // 构造SQL语句,并打印出来
        String sql = "select * from " + tableName;
        if (StringUtils.isNotBlank(param1)) {
            sql = sql + " where id = " + param1;
        }
        FineLoggerFactory.getLogger().info("查询sql: " + sql);
        // 保存得到的结果集
        ArrayList<Object[]> valueList = new ArrayList();
        Connection con = null;
        try {
            con = getConnection();
            FineLoggerFactory.getLogger().info("连接信息 \n" + con.toString());
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(sql);
            // 获得记录的详细信息,然后获得总列数
            ResultSetMetaData rsmd = rs.getMetaData();
            int colNum = rsmd.getColumnCount();
            FineLoggerFactory.getLogger().info("colNum \n" + colNum);
            // 用对象保存数据
            Object[] objArray = null;
            while (rs.next()) {
                objArray = new Object[colNum];
                for (int i = 0; i < colNum; i++) {
                    objArray[i] = rs.getObject(i + 1);
                }
                // 在valueList中加入这一行数据
                valueList.add(objArray);
            }
            // 释放数据库资源
            rs.close();
            stmt.close();
        } catch (Exception e) {
            FineLoggerFactory.getLogger().info("错误信息 \n" + e.getMessage());
            FineLoggerFactory.getLogger().error(e.getMessage(), e);
        } finally {
            try {
                if (con != null) {
                    con.close();
                }
            } catch (SQLException e) {
                FineLoggerFactory.getLogger().error(e.getMessage(), e);
            }
        }
        return valueList;
    }

    /**
     * 获取数据库连接 driverName和 url 可以换成您需要的
     *
     * @return Connection
     */
    private Connection getConnection() {
        String driverName = "com.mysql.jdbc.Driver";
        String username = "rokin";
        String password = "ZTtest@admin2022!";
        String url = "jdbc:mysql://172.16.85.19:3307/sys_configration?serverTimezone=GMT%2B8&characterEncoding=utf-8&allowPublicKeyRetrieval=true";
        Connection con = null;
        try {
            Class.forName(driverName);
            con = DriverManager.getConnection(url, username, password);
        } catch (Exception e) {
            FineLoggerFactory.getLogger().error(e.getMessage(), e);
        }
        return con;
    }
}

 3.3 新建有参数据集

3.4 填充内容

3.5 进行预览

 

3.6 查看日志

通过日志查看参数执行情况

打开日志%FR_HOME%/logs

查看日志情况

注意点:如果在执行过程中,发现引用的java程序存在异常,修改完成以后再次编辑,将class覆盖修改的代码未生效,建议新建一个类,将原先的类删除。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值