为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 java 中以通用方式编写此方法

如何在 java 中以通用方式编写此方法

qq_遁去的一_1 2023-06-04 11:06:47
目前,我为五个不同的类实现了这个方法,为五个不同的文本文件配置 FlatFileReader 并加载到数据库表中。我想知道有没有一种方法可以在一个常见的地方实现这个方法,这样我的每个文件都会调用这个方法来配置我的阅读器来读取它们相应的文件。每个文件都会发送不同的实体类来加载它们的文件。像主要实体、ChildEntity1、ChildEntity2、ChildEntity3、ChildEntity4。private void flatFileItemReaderConfig(FlatFileItemReader<PrimaryEntity> flatFileReader,        String fileName, String incomingHeader){    // set delimiter as '|'    DefaultLineMapper<PrimaryEntity> defaultLineMapper = new DefaultLineMapper<>();    DelimitedLineTokenizer delimitedLineTokenizer = new DelimitedLineTokenizer("|");    delimitedLineTokenizer.setNames(convertHeaderToEntityAttrib(fileName, incomingHeader));    defaultLineMapper.setLineTokenizer(delimitedLineTokenizer);    // convert each record into primaryentity    BeanWrapperFieldSetMapper<PrimaryEntity> beanWrapperFieldSetMapper = new BeanWrapperFieldSetMapper<>();    beanWrapperFieldSetMapper.setTargetType(PrimaryEntity.class);    beanWrapperFieldSetMapper.setCustomEditors(getCustomFormatters());    defaultLineMapper.setFieldSetMapper(beanWrapperFieldSetMapper);    flatFileReader.setLineMapper(defaultLineMapper);}
查看完整描述

1 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

向方法中添加泛型


private <T> void flatFileItemReaderConfig(FlatFileItemReader<T> flatFileReader, String fileName, String incomingHeader, Class<T> clazz) {


    // set delimiter as '|'

    DefaultLineMapper<T> defaultLineMapper = new DefaultLineMapper<>();


    DelimitedLineTokenizer delimitedLineTokenizer = new DelimitedLineTokenizer("|");

    delimitedLineTokenizer.setNames(convertHeaderToEntityAttrib(fileName, incomingHeader));

    defaultLineMapper.setLineTokenizer(delimitedLineTokenizer);


    // convert each record into primary entity

    BeanWrapperFieldSetMapper<T> beanWrapperFieldSetMapper = new BeanWrapperFieldSetMapper<>();

    beanWrapperFieldSetMapper.setTargetType(clazz);

    beanWrapperFieldSetMapper.setCustomEditors(getCustomFormatters());

    defaultLineMapper.setFieldSetMapper(beanWrapperFieldSetMapper);

    flatFileReader.setLineMapper(defaultLineMapper);

}

如果您只想将使用限制为列出的实体,请创建一个由所有具体实体 ( PrimaryEntity, ChildEntity1, ChildEntity2, ChildEntity3, ChildEntity4) 实现的通用接口实体,并将签名更改为


private <T extends Entity> void flatFileItemReaderConfig(...)


查看完整回答
反对 回复 2023-06-04
  • 1 回答
  • 0 关注
  • 109 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信