如何在ItemPreparedStatementSetter中为一对多映射设置值

时间:2016-08-23 10:44:09

标签: spring-batch

我正在尝试将JdbcBatchItemWriter用于域对象RemittanceClaimVORemittanceClaimVOList个其他域对象ClaimVO

public class RemittanceClaimVO {

private long remitId;
private List<ClaimVO> claims = new ArrayList<ClaimVO>();

//setter and getters
}

因此,对于每个remit id,会有多个声明,我希望使用单个批处理语句来插入所有行。

使用普通的jdbc,我曾经通过将值放在如下的批次中来编写这个对象,

ist<ClaimVO> claims = remittanceClaimVO.getClaims();
            if(claims != null && !claims.isEmpty()){
            for(ClaimVO claim:claims){
                int counter = 1 ;
                stmt.setLong(counter++, remittanceClaimVO.getRemitId());
                stmt.setLong(counter++, claim.getClaimId());

                stmt.addBatch();
            }
            }

            stmt.executeBatch();

我不确定如何使用ItemPreparedStatementSetter在Spring Batch中实现相同功能。

我在setValues方法中尝试了类似的循环但是没有设置值。

@Override
    public void setValues(RemittanceClaimVO remittanceClaimVO, PreparedStatement ps) throws SQLException {

        List<ClaimVO> claims = remittanceClaimVO.getClaims();

        for(ClaimVO claim:claims){
            int counter = 1 ;
            ps.setLong(counter++, remittanceClaimVO.getRemitId());
            ps.setLong(counter++, claim.getClaimId());

    }

    }

This似乎是另一个相关的问题。

请建议。

0 个答案:

没有答案