首页 > 代码库 > 关于Spring batch的学习之DB2CSV
关于Spring batch的学习之DB2CSV
上一篇已经介绍了如何将csv文件中的内容导入到数据库中,这一片我们来看看如何将数据库中的数据导出到csv文件中
在上一篇的基础上,我们新加内容,就不重新新建maven项目了
首先在原来的项目上面的java包下新建一个configuration,用来配置job的相关内容,为与上篇区分,我们取名为Configuration_DB_2_CSV,代码如下:
1 @Configuration 2 @EnableBatchProcessing 3 public class Configuration_DB_2_CSV { 4 @Bean 5 public ItemReader<User> reader(DataSource dataSource) { 6 JdbcCursorItemReader<User> reader = new JdbcCursorItemReader<User>(); 7 reader.setDataSource(dataSource); 8 reader.setSql("SELECT user_id,user_name,address,birth,gender FROM user"); 9 reader.setRowMapper(new BeanPropertyRowMapper<User>(User.class));10 return reader;11 }12 13 @Bean14 public ItemProcessor<User, String> processor() {15 return new UserItemProcessor_DB_2_CSV();16 }17 18 @Bean19 public ItemWriter<String> writer() throws IOException {20 FlatFileItemWriter<String> writer = new FlatFileItemWriter<String>();21 writer.setResource(new PathResource("test.csv"));22 DelimitedLineAggregator<String> delimitedLineAggregator = new DelimitedLineAggregator<String>();23 delimitedLineAggregator.setDelimiter(",");24 writer.setLineAggregator(delimitedLineAggregator);25 return writer;26 }27 28 @Bean29 public Job exportUserJob(JobBuilderFactory jobs, Step s1) {30 return jobs.get("exportUser")31 .incrementer(new RunIdIncrementer())32 .flow(s1)33 .end()34 .build();35 }36 37 @Bean38 public Step step1(StepBuilderFactory stepBuilderFactory, ItemReader<User> reader,39 ItemWriter<String> writer, ItemProcessor<User, String> processor) {40 return stepBuilderFactory.get("step1")41 .<User, String> chunk(10)42 .reader(reader)43 .processor(processor)44 .writer(writer)45 .build();46 }47 48 @Bean49 public JdbcTemplate jdbcTemplate(DataSource dataSource) {50 return new JdbcTemplate(dataSource);51 }52 53 }
接下来,我们需要添加处理程序PersonItemProcessor_DB_2_CSV,由于我们目前是将DB数据库处理存放在CSV文件中,最终的形式是以字符串的格式存放,所以在我们处理的返回值类型定为String类型,这样后期我们的处理会方便很多。下面我们直接将我们的处理程序贴出来,在这里,根据项目的需要,对不同filed进行处理。我们这只是一个demo。
1 public class UserItemProcessor_DB_2_CSV implements ItemProcessor<User, String> { 2 3 @Override 4 public String process(final User user) throws Exception { 5 //DB2CSV 6 final String userId = "2014010"+ user.getUserId(); 7 final String gender = user.getGender().equals("M")?"male":"female"; 8 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月DD日"); 9 final String birth = sdf.format(user.getBirth());10 final String userName = user.getUserName().substring(0,1).toUpperCase()+user.getUserName().substring(1).toLowerCase();11 final String address= user.getAddress().substring(0,1).toUpperCase()+user.getAddress().substring(1).toLowerCase();12 return userId+","+userName+","+getAddress+","+birth+","+gender;13 }14 }
最后一步,为了防止写文件没有用,这里我么需要将之前resources包下面的schema_all.sql删除,或者建表语句更换掉,防止将数据库中的数据删除了。同时需要将上一篇的Configuration文件中的@Configuration和@EnableBatchProcessing注解注释掉,否则会让系统分不清使用什么配置,启动那一个job。
关于Spring batch的学习之DB2CSV
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。