1 回答
TA贡献2051条经验 获得超10个赞
我想问这个,FieldSetMapper这个类可以用吗
是的,你可以使用这个类。由于您编写了 custom FieldSetMapper,因此您可以控制映射逻辑。您的映射器将类似于:
public class CustomerDataMapper implements FieldSetMapper<Customer> {
private static Log log = LogFactory.getLog(CustomerDataMapper.class);
@Override
public RawData mapFieldSet(FieldSet fieldSet) throws BindException {
Customer customer = new Customer();
try {
customer.setCust_Num(fieldSet.readInt("id"));
customer.setName_Surname(fieldSet.readString("name"));
}catch (Exception e){
log.error("Mapping error, " + e);
}
return customer;
}
}
但是您的问题不在阅读方面(和FieldSetMapper),而是在作者方面。使用JdbcBatchItemWriteraItemSqlParameterSourceProvider从您的Customer对象中提取数据并将它们设置在 sql 查询中。默认情况下,BeanPropertyItemSqlParameterSourceProvider使用 a,此实现基于 JavaBeans 命名约定提取数据。但是,您可以提供自定义实现,在您的情况下将类似于:
class CustomerItemSqlParameterSourceProvider implements ItemSqlParameterSourceProvider<Customer> {
@Override
public SqlParameterSource createSqlParameterSource(Customer customer) {
Map<String, Object> params = new HashMap<>();
params.put("custNum", customer.getCust_Num());
params.put("nameSurname", customer.getName_Surname());
return new MapSqlParameterSource(params);
}
}
然后你把它设置CustomerItemSqlParameterSourceProvider在你的作家身上。
希望这可以帮助。
添加回答
举报