我必须在spring batch期间从MongoDB读取整个集合,而不使用过滤器。
我已经创建了一个类XyzMongoItemReader,它在XyzMongoItemReader构造函数上扩展了MongoItemReader,我设置了以下字段:
public XyzMongoItemReader(
final MongoTemplate template,
final Query query) {
setTemplate(template);
setQuery(query);
setTargetType(Xyz.class);
}
字符串
Xyz类用@Document注解,字段用@Field注解:
@Data
@NoArgsConstructor
@AllArgsConstructor
@Document
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Xyz {
@Field
@JsonProperty
protected String x;
@Field
@JsonProperty
private String y;
@Field
@JsonProperty
private Z z;
}
型
配置类为:
@Configuration
@EnableBatchProcessing
public class XyzBatchConfigurerReaderFromMongoWriterToRedis extends AbstractBatchConfigurer<Xyz, String> {
@Autowired
MongoTemplate mongoTemplate;
@StepScope
@Bean
@Override
public ItemReader<Xyz> reader() throws Exception {
return new XyzMongoItemReader(mongoTemplate, new Query());
}
... processor ...
... writer ...
}
型
Mongo上的集合有20条记录,但是当执行read方法时,没有检索到文档。
这三个参数是否足够?
- 模板
- 查询
- targetType
“new Query()”是用来读取集合中所有文档的正确查询吗?
1条答案
按热度按时间63lcw9qa1#
我没有设置收藏...
字符串
读者:
型
使用queryString而不是Query还需要setSort:
型
读者:
型