在我的项目中,为了验证某个字段,我需要在spring批处理程序中执行一个查询。我怎么能这么做?谢谢!
---添加信息---这是步骤的定义
@Bean
public Step step1(JdbcBatchItemWriter<CaricoDTO> step1Writer) {
return stepBuilderFactory.get("step1").<CaricoDTO, CaricoDTO>chunk(10).reader(multiResourceItemReader())
.processor(processorStep1()).writer(step1Writer).build();
}
@Bean
public MultiResourceItemReader<CaricoDTO> multiResourceItemReader() {
MultiResourceItemReader<CaricoDTO> resourceItemReader = new MultiResourceItemReader<CaricoDTO>();
ArrayList<Integer> indexesToRemove = new ArrayList<Integer>();
Resource[] inputResources = null;
PathMatchingResourcePatternResolver patternResolver = new PathMatchingResourcePatternResolver();
try {
inputResources = patternResolver.getResources(inputPath);
} catch (IOException e) {
e.printStackTrace();
}
resourceItemReader.setResources(inputResources);
resourceItemReader.setDelegate(step1Reader());
resourceItemReader.setComparator(new FileComparator());
return resourceItemReader;
}
@Bean
public FlatFileItemReader<CaricoDTO> step1Reader() {
FlatFileItemReader<CaricoDTO> reader = new FlatFileItemReader<CaricoDTO>();
reader.setLinesToSkip(1);
reader.setLineMapper(new DefaultLineMapper<CaricoDTO>() {
{
setLineTokenizer(new DelimitedLineTokenizer("|") {
{
setNames(new String[] { ..... });
}
});
setFieldSetMapper(new BeanWrapperFieldSetMapper<CaricoDTO>() {
{
setTargetType(CaricoDTO.class);
}
});
}
});
return reader;
}
@Bean
public CaricoDTOItemProcessorStep1 processorStep1() {
CaricoDTOItemProcessorStep1 processorStep1 = new CaricoDTOItemProcessorStep1();
return processorStep1;
}
private String fileName;
private static final Logger log = LoggerFactory.getLogger(CaricoDTOItemProcessorStep1.class);
@Override
public CaricoDTO process(CaricoDTO carico) throws Exception {
carico.setDataCaricamento(new Date(System.currentTimeMillis()));
carico.setFileName(carico.getResource().getFilename());
return carico;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
}
这是我的作家
@Bean
public JdbcBatchItemWriter<CaricoDTO> step1Writer(DataSource dataSource) {
return new JdbcBatchItemWriterBuilder<CaricoDTO>()
.itemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<>())
.sql(....)
.dataSource(dataSource).build();
}
考虑到主操作中的一些细节,我假设一般的解决方案会被接受。
给定一个经典的Spring批处理项目设置,您应该能够访问一个org.springframework.jdbc.core.jdbctemplate
bean,该bean连接到目标javax.sql.datasource
,您可以简单地将该bode>javax.sql.datasource插入到您的批处理协作器组件中:
org.springframework.batch.item.itemReader
org.springframework.batch.item.ItemWriter
org.springframework.batch.item.itemprocessor
public class CaricoDTOItemProcessorStep1 implements ItemProcessor<CaricoDTO, CaricoDTO> {
@Autowired
private JdbcTemplate jdbcTemplate;
private String fileName;
private static final Logger log = LoggerFactory.getLogger(CaricoDTOItemProcessorStep1.class);
@Override
public CaricoDTO process(CaricoDTO item) throws Exception {
boolean someValue = jdbcTemplate.queryForObject("SELECT some_field FROM some_table WHERE some_other_field = 0", (rs, rowNum) -> rs.getBoolean(0));
if (someValue) {
carico.setDataCaricamento(new Date(System.currentTimeMillis()));
carico.setFileName(carico.getResource().getFilename());
return carico;
} else {
return null; // causes the item to be discarded from processing
}
}
}
不用说,您的查询依赖于您的域用例,并且需要更新。
大家好,我在joomla 2.5中为后端做了一个组件,但是我在执行sql查询时遇到了问题,我的变量是空的,所以它不会显示任何内容。 我有其他的文件和文件,但这里对我的问题很重要。 首先在我的controller.php我有这个内部管理文件 在我的模型文件我有restaurante.php 在我的控制器文件里我有这个 最后,在我的视图文件中,我有一个默认的tmpl文件。显示表格的php 但是元素re
问题内容: 我想通过调用CouchDB查询特定文档的列表。 使用SQL,我会做类似的事情 在CouchDB中按一个字段或另一个字段执行此操作的诀窍是什么? 问题答案: 您需要使用views查询参数来获取具有指定集中键的记录。 接着 要同时检索文档内容,只需将查询参数添加到您的请求中。 UPD :也许您可能有兴趣通过此参考ID(2,4,56)来检索文档。默认情况下,CouchDB视图使用它们所属的文
问题内容: 我有5个单独的SQL查询,这些查询按顺序在控制器操作中执行。这是我用来执行它们的方法: 因此,基本上我有五个连续的查询,这些查询必须按顺序执行,并且代码必须在它们下面继续执行。有没有更好的方法可以从控制器操作内部执行查询?我不确定使用当前方法进行错误处理的最佳方法。 谢谢! 问题答案: 首先看在控制器和数据库之间创建一个抽象层。存储库就是一个例子,它会在您进行测试时提供帮助。您可以创建
我有两个表,一个用于聚会,一个用于记分卡模板映射。记分卡模板映射表有一个返回到party(on id)的外键。我想找到一个有记分卡模板映射细节的所有各方的列表。
我已经找到了解决方案(我认为),我将要求在甲骨文和SQL服务器上的问题,但似乎无法将其转化为Postgres解决方案。我正在使用Postgres 9.3.6。 这个想法是能够生成有关表内容的“元数据”以用于分析目的。这只能通过为每列运行查询来完成 (AFAIK),以便找出,比如说......最小值/最大值/计数值等。为了自动执行该过程,最好先由数据库生成查询,然后执行。 使用示例表,我能够使用以下
我试图使用Django将PostgreSQL表提取到HTML中,当我在PostgreSQL的查询工具中执行空间查询时,我得到了完美的结果,但当我试图从Django执行相同的脚本时,我得到了所有的数据行。谢谢你提前帮忙。 姜戈剧本 HTML