当前位置: 首页 > 知识库问答 >
问题:

Spring Integration CSV文件到POJO转换器

龚钧
2023-03-14
<int:transformer id="filetoPojoTransformer" input-channel="outputChannel" method="processContent"
          output-channel="fileOutputChannel" ref="FileToPOJOTransformer" />
<int:transformer id="filetoPojoTransformer" input-channel="outputChannel" method="processContent"
          output-channel="fileOutputChannel" ref="FileToPOJOTransformer" />
public class FileToPOJOTransformer { 

    public List processContent(File file){   
            String[] columns = null;
            List<String> lines = null;
            List<Model1> list = null;

                try {
                    lines = Files.readAllLines(file.toPath(), 
                            StandardCharsets.UTF_8);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                columns = lines.get(0).split(",");              

                final ColumnPositionMappingStrategy<Model1> strategy = new ColumnPositionMappingStrategy<>();
                strategy.setType(Model1.class);
                strategy.setColumnMapping(columns);
                final CsvToBean<Model1> csvToBean = new CsvToBean<>();

                try (final Reader reader = new FileReader(file)) {
                    list = csvToBean.parse(strategy, reader);
                } catch (IOException ex) {
                    throw new RuntimeException(ex);
                }
        return list;
        }

}
<int:recipient-list-router id="customRouter" input-channel="fileOutputChannel" default-output-channel="nullChannel">
       <int:recipient channel="channel1" selector-expression="headers['fileName'].startsWith('File1')"/>
       <int:recipient channel="channel2" selector-expression="headers['fileName'].startsWith('File2')"/>       
     </int:recipient-list-router>

f)现在我必须将CSV的内容存储到数据库中,所以我使用了jdbc-output-adapter

<int-jdbc:outbound-channel-adapter  
        id="jdbcOutBoundAdapterEndpoint1" channel="channel1"  
        query="insert into ImodiumTracking.ResponsesSent (Col1) 
        values(:payload.get(0).Col1)"
        data-source="dataSource">  
    </int-jdbc:outbound-channel-adapter> 

我尝试了不同的选项来获取bean值,但都不起作用。如何从包含POJO列表的有效负载中获取jdbc-output-adapter中的bean值

共有1个答案

曹鸿风
2023-03-14
  1. 显示exception
  2. 显示列表的内容
  3. 为什么不拆分列表以将每个项存储到数据库中?

试试这个:

query="insert into ImodiumTracking.ResponsesSent (Col1) values(:payload[0].col1)"

如果POJO具有getcol1()

 类似资料:
  • 问题内容: 我一直在研究Jackson,但似乎我必须将Map转换为JSON,然后将所得的JSON转换为POJO。 有没有一种方法可以将Map直接转换为POJO? 问题答案: 好吧,您也可以使用Jackson来实现。(由于您正在考虑使用杰克逊,因此似乎更舒适)。 使用的方法: 无需转换为JSON字符串或其他内容;直接转换的速度要快得多。

  • 我试图将一个JSON请求传递给我的服务器,在那里控制器在将JSON转换为POJO时遇到一个错误。 我不确定代码出了什么问题。我对Spring还是个新手,所以我很感激你的帮助。

  • 我有这样一个json: 所以它是一个包含名称数组的对象。对此,什么是等效的Pojo? 但是我得到嵌套异常:

  • 我有一堆XML文档(源),需要将它们转换为具有不同结构(目标)的POJO。我的第一个明显的想法是使用JAXB和XSLT的组合。然而,在一些问题上,我不确定这是否合适。 我无法访问源的XSD。 我不需要目标作为XML结构,而只需要作为POJOs。 然后我想创建一个映射表,比如。 然而,这将导致大量“映射”代码,特别是在涉及复杂数据类型的情况下。 你对我如何实施这一点有什么建议吗?

  • 问题内容: 我有一个.mwb格式的数据库。我想在日食中使用它,所以我需要将其转换为.sql格式。如果有人知道如何使用任何工具来做到这一点。我认为我的sql工作台可以做到这一点,但不知道该怎么做。 问题答案: 在菜单中单击“数据库”,然后单击“正向工程”(快捷键CTRL + G)。 更新: 您的.mwb文件是专有格式,还包含Workbench中图形表示的信息。生成的.sql文件是一个脚本,您的MyS

  • 我用APKTool反向设计了一个Android应用程序,得到了一个。Smali文件作为源代码输出。我转换了。Smali文件和应用程序。Java文件。我成功地编辑了。Java文件,但现在我想把它们转换回。这样我就可以用新的重新编译应用程序了。Smali文件。当我离开的时候。Java文件,它没有重新编译,并给出了一些错误。我找不到任何关于编译的信息。Java到。所以我希望你们能帮我。 提前谢谢你。