4

我有一个场景,我需要解析平面文件并将这些记录处理到 mysql 数据库插入中(模式已经存在)。

我使用 FlatFileItemReader 解析文件和 JdbcCursorItemWriter 插入数据库。

我还使用 ItemProcessor 来转换任何列值或跳过我不想要的记录。

我的问题是,其中一些插入需要对已经有数据的其他表有一个外键。

所以我想在 ItemProcessor 逻辑中进行选择以检索 ID 并更新 pojo。

这是最好的方法吗?我可以考虑替代方案,因为我刚刚开始写这一切。

谢谢!

4

2 回答 2

4

ItemProcessorSpring Batch 步骤通常用于丰富数据和查询数据库以获取类似的内容。

对于记录,另一种选择是在插入语句中使用子选择来获取插入记录时的外键值。这可能会更高效一些,因为它消除了额外的数据库命中。

于 2015-05-28T14:21:24.517 回答
0

对于批处理 - 如果您需要任何地方,您可以使用批处理侦听器在任何地方批量调用使用下面的方法

好吧,我编写的以下代码对我有用-

在您的主类中-将您的应用程序上下文加载到静态变量中-APP_CONTEXT

如果您不使用基于 XML 的方法 - 然后通过自动连接获取数据源,然后您可以使用以下代码 -

 Connection conn = null;
PreparedStatement pstmt= null;

try {


DataSource dataSource = (DataSource) Main.APP_CONTEXT
        .getBean("dataSource");

 conn = dataSource.getConnection();
 pstmt = conn.prepareStatement(" your SQL query to insert ");

pstmtMstr.executeQuery();

} catch (Exception e) {

}finally{

    if(pstmt!=null){
        pstmt.close();
    }if(conn!=null){
        conn.close();
    }


}
于 2015-05-29T12:18:18.183 回答