Spring Batch Write Header

时间:2015-02-26 16:01:56

标签: java spring spring-batch

我有一个弹出批处理文件,它从数据库中提取数据并将其写入.CSV文件。

我想添加作为文件标题提取的列的名称,而不对文件进行硬编码。

我可以在得到结果时写入标题,还是有其他解决方案?

由于

1 个答案:

答案 0 :(得分:0)

fileItemWriter.setHeaderCallback(new FlatFileHeaderCallback() {
            public void writeHeader(Writer writer) throws IOException {
                writer.write(Arrays.toString(names));
            }
        });

[names]可以使用您为rowMapper使用的列名创建的域类的反射来获取,如下所示:

private String[] reflectFields() throws ClassNotFoundException { 
        Class job = Class.forName("DomainClassName");
        Field[] fields = FieldUtils.getAllFields(job);
        names = new String[fields.length];
        for(int i=0; i<fields.length; i++){
            names[i] = fields[i].getName(); 
        }
        return names;
    }