关于Spring batch的学习之DB2CSV(2)
2014-10-18 15:46
211 查看
上一篇中我们基本完成了从数据库到文件的读写,但是上一篇的处理上面是返回字符串,这样在我们的处理过程会变的很简单,但是当我们如果处理程序返回的不是一个String类型的字符串,而是一个entity类型呢?那么在我们的writer的处理时候就会边的不一样了。
现在我们就来看看他们之间的区别。
我们如果对于Spring batch稍微有点了解的,都应该知道,写文件是通过FlatFileItemWriter类的对象完成的,要完成写操作,首先,我们需要提供一个resources给writer对象,告诉它文件往哪里写,另外,还需要通过DelimitedLineAggregator的对象来对我们处理过的信息进行相关的再处理,但他在处理信息的时候,需要我们提供一个Delimiter,也就是告诉他,如何将信息进行划分成一个一个的字段。如果我们从process返回来的是一个String类型,那么我们就不需要再做其他事情了,但是如果是返回来一个entity的话,我们还要告诉DelimitedLineAggregator对象,如何将我们返回来的entity与我们现有的对象类的每个字段相匹配。这样也就需要我们给DelimitedLineAggregator对象提供BeanWrapperFieldExtractor对象,这个对象里面就是用来帮助我们将返回来的entity与我们给定的names进行相关的匹配。所以,在这之前我们还需要给BeanWrapperFieldExtractor对象设置FieldExtractor,传给他一个names数组。
具体代码如下:
现在我们就来看看他们之间的区别。
我们如果对于Spring batch稍微有点了解的,都应该知道,写文件是通过FlatFileItemWriter类的对象完成的,要完成写操作,首先,我们需要提供一个resources给writer对象,告诉它文件往哪里写,另外,还需要通过DelimitedLineAggregator的对象来对我们处理过的信息进行相关的再处理,但他在处理信息的时候,需要我们提供一个Delimiter,也就是告诉他,如何将信息进行划分成一个一个的字段。如果我们从process返回来的是一个String类型,那么我们就不需要再做其他事情了,但是如果是返回来一个entity的话,我们还要告诉DelimitedLineAggregator对象,如何将我们返回来的entity与我们现有的对象类的每个字段相匹配。这样也就需要我们给DelimitedLineAggregator对象提供BeanWrapperFieldExtractor对象,这个对象里面就是用来帮助我们将返回来的entity与我们给定的names进行相关的匹配。所以,在这之前我们还需要给BeanWrapperFieldExtractor对象设置FieldExtractor,传给他一个names数组。
具体代码如下:
@Bean public ItemWriter<User> writer() throws IOException { FlatFileItemWriter<String> writer = new FlatFileItemWriter<User>(); writer.setResource(new PathResource("test.csv")); DelimitedLineAggregator<User> delimitedLineAggregator = new DelimitedLineAggregator<User>(); delimitedLineAggregator.setDelimiter(","); String[] names = {"userId","userName","address","birth","gender"}; BeanWrapperFieldExtractor<User> beanWrapperFieldExtractor = new BeanWrapperFieldExtractor<User>(); beanWrapperFieldExtractor.setNames(names); delimitedLineAggregator.setFieldExtractor(beanWrapperFieldExtractor); writer.setLineAggregator(delimitedLineAggregator); return writer; }
相关文章推荐
- 关于Spring batch的学习之DB2CSV
- 关于Spring batch的学习之CSV2DB
- 关于DB2的日常学习
- 关于Spring Batch的学习资料分享
- kingofark关于学习C++和编程的另外35个观点
- 关于DBGRIDEH导出数据到CSV
- 关于怎么学习API (OpenGL/Direct3D等)
- 关于英语及外语学习的50个观点
- kingofark关于学习C++和编程的另外35个观点
- 关于Java异常处理的学习代码
- WIN32汇编: 5.学习更多的关于文本的知识
- 【旧】2004-1-28 1:25:59 软件技术前沿:关于XML和RSS(2) ——学习xml--《无废话xml》
- XML学习笔记(一):关于字符编码的理解
- 关于学习
- 关于孟子E章大侠的《带图片的,多列的DropDownList的实现 》的学习和改进
- 关于OR-Mapping的学习心得体会
- 关于新手学习ejb的建议
- 学习笔记:关于科学方法在社会科学中的局限性
- Kingofark关于学习C++和编程的50个观点2003修订版
- 学习心得---关于seh(1)