Advertisement
Guest User

Untitled

a guest
Aug 8th, 2016
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.11 KB | None | 0 0
  1. package me.snikit.config;
  2.  
  3. import javax.sql.DataSource;
  4.  
  5. import org.springframework.batch.core.Job;
  6. import org.springframework.batch.core.Step;
  7. import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
  8. import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
  9. import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
  10. import org.springframework.batch.core.launch.support.RunIdIncrementer;
  11. import org.springframework.batch.item.ItemReader;
  12. import org.springframework.batch.item.ItemWriter;
  13. import org.springframework.batch.item.database.JdbcCursorItemReader;
  14. import org.springframework.batch.item.file.FlatFileItemWriter;
  15. import org.springframework.batch.item.file.transform.LineAggregator;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
  18. import org.springframework.context.annotation.Bean;
  19. import org.springframework.context.annotation.Configuration;
  20. import org.springframework.core.io.FileSystemResource;
  21. import org.springframework.jdbc.core.BeanPropertyRowMapper;
  22.  
  23. import me.snikit.domains.Customer;
  24.  
  25. @Configuration
  26. @EnableBatchProcessing
  27. @EnableAutoConfiguration
  28. public class BatchConfig {
  29.  
  30. @Autowired
  31. public JobBuilderFactory jobBuilderFactory;
  32.  
  33. @Autowired
  34. public StepBuilderFactory stepBuilderFactory;
  35.  
  36. @Autowired
  37. DataSource dataSource;
  38.  
  39. @Bean
  40. ItemWriter<Customer> writer() {
  41. FlatFileItemWriter<Customer> csvFileWriter = new FlatFileItemWriter<>();
  42.  
  43. String exportFileHeader = "customerNumber|addressLine1|addressLine2|city|contactFirstName|contactLastName|country|creditLimit|customerName|phone|postalCode|state";
  44. StringHeaderWriter headerWriter = new StringHeaderWriter(exportFileHeader);
  45. csvFileWriter.setHeaderCallback(headerWriter);
  46.  
  47. String exportFilePath = "D:/a/students.csv";
  48. csvFileWriter.setResource(new FileSystemResource(exportFilePath));
  49.  
  50. LineAggregator<Customer> lineAggregator = WriterConfig.createLineAggregator();
  51. csvFileWriter.setLineAggregator(lineAggregator);
  52.  
  53. return csvFileWriter;
  54. }
  55.  
  56. private static final String SQL_QUERY = "SELECT * FROM customers";
  57.  
  58. @Bean
  59. ItemReader<Customer> reader(DataSource dataSource) {
  60. JdbcCursorItemReader<Customer> databaseReader = new JdbcCursorItemReader<>();
  61. databaseReader.setDataSource(dataSource);
  62. databaseReader.setSql(SQL_QUERY);
  63. databaseReader.setRowMapper(new BeanPropertyRowMapper<>(Customer.class));
  64. databaseReader.setFetchSize(100);
  65. return databaseReader;
  66. }
  67.  
  68. @Bean
  69. public Step step1(ItemWriter<Customer> writer, ItemReader<Customer> reader) {
  70. return stepBuilderFactory.get("step1").<Customer, Customer> chunk(10).reader(reader).writer(writer).build();
  71. }
  72.  
  73. @Bean
  74. public Job job(Step step1) {
  75. return jobBuilderFactory.get("job").incrementer(new RunIdIncrementer()).flow(step1).end().build();
  76. }
  77.  
  78. }
  79. spring.datasource.url=jdbc:mysql://localhost/classicmodels
  80. spring.datasource.username=snikit
  81. spring.datasource.password=maxpain
  82. spring.jpa.hibernate.ddl-auto=update
  83. spring.jpa.show-sql=true
  84. spring.datasource.validationQuery = SELECT 1
  85. spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement