有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在Spring批处理读取器中设置最大值?

我必须从数据库中提取20k行。 我不知道为什么,但我只能拿到2k(每IJ_鳕鱼1k,这是我的PK) 我想修改pageSize,但没有任何意义,因为我有另一个具有相同配置(更容易查询)的读写器,可以毫无问题地提取300k行

@Bean("trackReader")
@JobScope
public ItemReader<HappyFridayTrackUser> trackReader() throws Exception {

    JdbcPagingItemReader<HappyFridayTrackUser> databaseReader = new JdbcPagingItemReader<HappyFridayTrackUser>();
    final SqlPagingQueryProviderFactoryBean sqlPagingQuery = new SqlPagingQueryProviderFactoryBean();

    sqlPagingQuery.setDataSource(dataSource);


    sqlPagingQuery.setSelectClause("select T.ij_cod, T.creation_date, U.msisdn, u.flag_master, T.cd_user, P.title ");
    sqlPagingQuery.setFromClause("from SJ4_VODAFONE_BUSINESS.VODA_HAPPY_MONDAY_TRACK T, SJ4_VODAFONE_BUSINESS.USERS U, sj4_vodafone_business.promo_catalog P ");
    sqlPagingQuery.setWhereClause("where p.ij_cod = t.ij_cod and t.cd_user = u.cd_user and t.ij_cod in( "
            + "select IJ_COD "
            + "from SJ4_VODAFONE_BUSINESS.PROMO_CATALOG "
            + "where CAT_LEVEL_1 = 'monday' and PROMO_ID like 'MONDAY_%' "
            + "and END_DATE >trunc((sysdate -6), 'DD') "
            + "and END_DATE <= trunc((sysdate),'DD'))");

    sqlPagingQuery.setSortKey("ij_cod");
    databaseReader.setQueryProvider(sqlPagingQuery.getObject());
    databaseReader.setDataSource(dataSource);
    databaseReader.setPageSize(1000);
    databaseReader.setRowMapper(new BeanPropertyRowMapper<HappyFridayTrackUser>(HappyFridayTrackUser.class));

    return databaseReader;
}//close trackReader


@Bean("trackWriter")
@StepScope
public FlatFileItemWriter<HappyFridayTrackUser> trackWriter(){

    LocalDate localDate = LocalDate.now();
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-LLLL-yyyy");
    String formattedString = localDate.format(formatter);

    Resource outputResource = new FileSystemResource(pathExportTrack + formattedString + ".csv");

    FlatFileItemWriter<HappyFridayTrackUser> writer = new FlatFileItemWriter<>();

    writer.setResource(outputResource);
    writer.setAppendAllowed(true);
    writer.setLineAggregator(new DelimitedLineAggregator<HappyFridayTrackUser>() {
        {
            setDelimiter("|");
            setFieldExtractor(new BeanWrapperFieldExtractor<HappyFridayTrackUser>() {
                {
                    setNames(new String[] {"ijCod", "creationDate", "msisdn",
                            "flagMaster", "cdUser", "title"});
                }
            });
        }
    });

    return writer;
}//close trackWriter

有人对此有什么建议吗


共 (0) 个答案