Spring 批处理:ItemProcessor 查询数据库?

Spring Batch: ItemProcessor query Database?

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

我正在使用 FlatFileItemReader 解析文件,并使用 JdbcCursorItemWriter 插入数据库。

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

我的问题是,其中一些插入需要外键指向其他一些已经有数据的table。

所以我想在 ItemProcessor 逻辑中做一个 select 来检索 ID 并更新 pojo。

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

谢谢!

Spring 批处理步骤中的 ItemProcessor 通常用于丰富数据,查询数据库以获取类似的东西很常见。

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

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

我写的下面这段代码对我有用 --

在您的 Main 中 class - 在静态变量中加载您的应用程序上下文 - 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();
    }


}