码迷,mamicode.com
首页 > 数据库 > 详细

关于Spring batch的学习之DB2CSV(2)

时间:2014-10-18 16:47:51      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   ar   sp   文件   数据   

上一篇中我们基本完成了从数据库到文件的读写,但是上一篇的处理上面是返回字符串,这样在我们的处理过程会变的很简单,但是当我们如果处理程序返回的不是一个String类型的字符串,而是一个entity类型呢?那么在我们的writer的处理时候就会边的不一样了。

现在我们就来看看他们之间的区别。

我们如果对于Spring batch稍微有点了解的,都应该知道,写文件是通过FlatFileItemWriter类的对象完成的,要完成写操作,首先,我们需要提供一个resources给writer对象,告诉它文件往哪里写,另外,还需要通过DelimitedLineAggregator的对象来对我们处理过的信息进行相关的再处理,但他在处理信息的时候,需要我们提供一个Delimiter,也就是告诉他,如何将信息进行划分成一个一个的字段。如果我们从process返回来的是一个String类型,那么我们就不需要再做其他事情了,但是如果是返回来一个entity的话,我们还要告诉DelimitedLineAggregator对象,如何将我们返回来的entity与我们现有的对象类的每个字段相匹配。这样也就需要我们给DelimitedLineAggregator对象提供BeanWrapperFieldExtractor对象,这个对象里面就是用来帮助我们将返回来的entity与我们给定的names进行相关的匹配。所以,在这之前我们还需要给BeanWrapperFieldExtractor对象设置FieldExtractor,传给他一个names数组。

具体代码如下:

 1  @Bean
 2     public ItemWriter<User> writer() throws IOException {
 3         FlatFileItemWriter<String> writer = new FlatFileItemWriter<User>();
 4         writer.setResource(new PathResource("test.csv"));
 5         DelimitedLineAggregator<User> delimitedLineAggregator = new DelimitedLineAggregator<User>();
 6         delimitedLineAggregator.setDelimiter(",");
 7         String[] names = {"userId","userName","address","birth","gender"};
 8         BeanWrapperFieldExtractor<User> beanWrapperFieldExtractor = new BeanWrapperFieldExtractor<User>();
 9         beanWrapperFieldExtractor.setNames(names);
10         delimitedLineAggregator.setFieldExtractor(beanWrapperFieldExtractor);
11         writer.setLineAggregator(delimitedLineAggregator);
12         return writer;
13     }

 

关于Spring batch的学习之DB2CSV(2)

标签:style   blog   http   color   io   ar   sp   文件   数据   

原文地址:http://www.cnblogs.com/xincunshannian/p/4033262.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!