首页 > 代码库 > 关于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