为了能够记录所有跳过的记录/行(来自Flat文件),我FieldSet.getValues()
在FieldSetMapper<T>
实现中链接了Item(数据模型)。
这record
是我的数据模型。
public void loadRecord(FieldSet fieldSet){
record.setFieldSet(fieldSet.getValues());
}
SB提供记录/线用于onSkipInRead
在FlatFileParseException
。要为onSkipInWrite
和提供相同的功能onSkipInProcess
,我想出了上述解决方案。另外,record
它不存储平面文件中的所有字段,因此我不能仅使用数据模型来每一行。
谢谢您的帮助 !
现在,我可以更好地理解您的问题了:)
将整行保存到您的域对象中,而不是FieldSet
使用custom LineMapper
。
从LineMapper
javadoc:
用于将线(字符串)映射到域对象的接口,通常用于将每行从文件读取的线映射到域对象。此接口的实现执行解析行的实际工作,而不必处理如何获取行。
因此,使用委托很容易解决您的问题:
class StoreLineLineMapper implements LineMapper<DomainObject> {
private LineMapper<DomainObject> delegate;
public DomainObject mapLine(java.lang.String line, int lineNumber) throws java.lang.Exception {
DomainObject record = delegate.mapLine(line, lineNumber);
record.setLineInfo(new LineInfo(line, lineNumber));
return record;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句