Fazer uma demonstração de vídeo pouco acompanhamento
Construção da declaração de mesa
CRIAR mesa cliente ( ID de BIGINT PRIMARY KEY , firstName VARCHAR ( 50 ), lastName VARCHAR ( 50 ), aniversário VARCHAR ( 50 ) )
Estrutura de Diretórios
classe de entidade Customer
empacotar com.practice.itemwriterdb; público classe Cliente { private longa id; firstName private String; lastName private String; aniversário private String; pública de longo getId () { return id; } Pública setId void ( long id) { this.id = id; } Pública de Cordas getFirstName () { retornar firstName; } Pública setFirstName vazio (String firstName) { this.firstName = firstName; } pública de Cordas getLastName () { retornar lastName; } Pública setLastName vazio (String lastName) { this.lastName = lastName; } Pública getBirthday String () { return aniversário; } Pública setBirthday void (aniversário String) { this.birthday = aniversário; } @Override pública de Cordas toString () { return "Cliente {" + "id = " + ID + "FirstName = ' " + firstName + ' \ '' + "lastName = ' " + lastName + ' \ '' + "aniversário = ' " + aniversário + ' \ '' + ' } ' ; } }
DemoApplication
empacotar com.practice.itemwriterdb; importação org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; importação org.springframework.boot.SpringApplication; importação org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @EnableBatchProcessing pública DemoApplication classe { público static void main (String [] args) { SpringApplication.run (DemoApplication.class, args); } }
FlatFileReaderConfig
empacotar com.practice.itemwriterdb; importação org.springframework.batch.core.configuration.annotation.StepScope; importar org.springframework.batch.item. arquivo .FlatFileItemReader; importar org.springframework.batch.item. arquivo .mapping.DefaultLineMapper; importar org.springframework.batch.item. arquivo .mapping.FieldSetMapper; importar org.springframework.batch.item. arquivo .transform.DelimitedLineTokenizer; importar org.springframework.batch.item. arquivo .transform.FieldSet; importação org.springframework.context.annotation.Bean; importação org.springframework.context.annotation.Configuration; importação org.springframework.core.io.ClassPathResource; importação org.springframework.validation.BindException; @Configuration pública classe FlatFileReaderConfig { @Bean pública FlatFileItemReader < Cliente > flatFileReader () { FlatFileItemReader < Cliente > reader = new FlatFileItemReader < Cliente > (); reader.setResource (novo ClassPathResource ( "Customers.txt")); // reader.setLinesToSkip ( 1 ); // 解析数据 DelimitedLineTokenizer tokenizer= novo DelimitedLineTokenizer (); Tokenizer.setNames (new String [] { "id", "Nome", "Sobrenome", "aniversário"}); DefaultLineMapper < Cliente > mapeador = new DefaultLineMapper <> (); mapper.setLineTokenizer (tokenizador); mapper.setFieldSetMapper (novo FieldSetMapper < Cliente > () { @Override pública Cliente mapFieldSet (conjunto de campos Fieldset) lança BindException { Cliente = new Cliente (); customer.setId (fieldSet.readLong ( "id")); customer.setFirstName (fieldSet.readString ( "firstName")); customer.setLastName (fieldSet.readString ( "lastName")); customer.setBirthday (fieldSet.readString ( "aniversário")); retornar ao cliente; } }); mapper.afterPropertiesSet (); reader.setLineMapper (mapper); voltar leitor; } }
ItemWriterDbConfig
empacotar com.practice.itemwriterdb; importar org.springframework.batch.item. banco de dados .BeanPropertyItemSqlParameterSourceProvider; importar org.springframework.batch.item. banco de dados .JdbcBatchItemWriter; importação org.springframework.beans.factory.annotation.Autowired; importação org.springframework.context.annotation.Bean; importação org.springframework.context.annotation.Configuration; importação javax.sql.DataSource; @Configuration pública classe ItemWriterDbConfig { @Autowired private DataSource dataSource; @Bean pública JdbcBatchItemWriter < Cliente > itemWriterDb () { JdbcBatchItemWriter < Cliente > escritor = new JdbcBatchItemWriter < Cliente > (); writer.setDataSource (dataSource); writer.setSql ( " inserção no cliente (id, nome, sobrenome, aniversário) valores " + "(: id,: firstName,: lastName,: aniversário)"); writer.setItemSqlParameterSourceProvider (novo BeanPropertyItemSqlParameterSourceProvider <> ()); voltar escritor; } }
itemWriterDbDemo
empacotar com.practice.itemwriterdb; importação org.springframework.batch.core.Job; importação org.springframework.batch.core.Step; importação org.springframework.batch.core.configuration.annotation.JobBuilderFactory; importação org.springframework.batch.core.configuration.annotation.StepBuilderFactory; importação org.springframework.batch.item.ItemReader; importação org.springframework.batch.item.ItemWriter; importar org.springframework.batch.item. arquivo .FlatFileItemReader; importação org.springframework.beans.factory.annotation.Autowired; importação org.springframework.beans.factory.annotation.Qualifier; importação org.springframework.context.annotation.Bean; importação org.springframework.context.annotation.Configuration; @Configuration pública classe itemWriterDbDemo { @Autowired jobBuilderFactory JobBuilderFactory privado; @Autowired privada StepBuilderFactory stepBuilderFactory; @Autowired @Qualifier ( "flatFileReader") ItemReader < Cliente > flatFileItemReader; @Autowired @Qualifier ( "itemWriterDb") ItemWriter < ? Super Cliente > itemWriterDb; @Bean pública itemWriterDemoDbJob Job () { return jobBuilderFactory.get ( "itemWriterDemoDbJob") começar (itemWriterDbDemoStep ()) build ()..; } @Bean públicaPasso itemWriterDbDemoStep () { retornar stepBuilderFactory.get ( "itemWriterDbDemoStep"). < Cliente, o Cliente > pedaço ( 10 ) .reader (flatFileItemReader) .writer (itemWriterDb) .build (); } }
clientes
. 1, John Barrett, 1994-10-19 14:11:03
2, Mary, Barrett2,1999-10-19 14:11:03
. 3, Lisa, Barrett3,1995-10-19 14:11:03
resultados operacionais :