Hacer un vídeo de demostración poco seguimiento
La construcción de la tabla de declaración
CREAR mesa de cliente ( Identificación del BIGINT PRIMARIA CLAVE , firstName VARCHAR ( 50 ), lastName VARCHAR ( 50 ), cumpleaños VARCHAR ( 50 ) )
Estructura de directorios
clase de entidad de cliente
com.practice.itemwriterdb empaquetar; pública class Cliente { privada de largo Identificación; primerNombre cadena privada; lastName cadena privada; cumpleaños cadena privada; pública a largo getId () { retorno de la identificación; } pública setId vacío ( larga id) { this.id = Identificación; } pública Cadena getFirstName () { volver primerNombre; } pública setFirstName vacío (String primerNombre) { this.firstName = firstName; } pública Cadena getLastName () { volver lastName; } pública setLastName vacío (String lastName) { this.lastName = lastName; } pública Cadena getBirthday () { retorno de cumpleaños; } pública setBirthday vacío (cumpleaños String) { this.birthday = cumpleaños; } @ Override pública Cadena toString () { retorno "Cliente {" + "id = " + ID + "Nombre = ' " + Nombre + ' \ '' + "lastName = ' " + Apellido + ' \ '' + " , cumpleaños = ' "+ cumpleaños + ' \ '' + ' } ' ; } }
DemoApplication
com.practice.itemwriterdb empaquetar; org.springframework.batch.core.configuration.annotation.EnableBatchProcessing importación; org.springframework.boot.SpringApplication importación; org.springframework.boot.autoconfigure.SpringBootApplication importación; @SpringBootApplication @EnableBatchProcessing pública DemoApplication clase { público static void main (String [] args) { SpringApplication.run (DemoApplication.class, args); } }
FlatFileReaderConfig
com.practice.itemwriterdb empaquetar; org.springframework.batch.core.configuration.annotation.StepScope importación; importar org.springframework.batch.item. presentar .FlatFileItemReader; importar org.springframework.batch.item. presentar .mapping.DefaultLineMapper; importar org.springframework.batch.item. presentar .mapping.FieldSetMapper; importar org.springframework.batch.item. presentar .transform.DelimitedLineTokenizer; importar org.springframework.batch.item. presentar .transform.FieldSet; org.springframework.context.annotation.Bean importación; org.springframework.context.annotation.Configuration importación; org.springframework.core.io.ClassPathResource importación; org.springframework.validation.BindException importación; @Configuration pública clase FlatFileReaderConfig { @Bean pública FlatFileItemReader < Cliente > flatFileReader () { FlatFileItemReader < Cliente > lector = nuevo FlatFileItemReader < Cliente > (); reader.setResource (nuevo ClassPathResource ( "Customers.txt")); // reader.setLinesToSkip ( 1 ); // datos de análisis sintáctico DelimitedLineTokenizer tokenizer = nuevo DelimitedLineTokenizer (); tokenizer.setNames (nueva cadena [] { "id", "Nombre", "Apellido", "Cumpleaños"}); DefaultLineMapper < Cliente > asignador = nueva DefaultLineMapper <> (); mapper.setLineTokenizer (tokenizer); mapper.setFieldSetMapper (nueva FieldSetMapper < Cliente > () { @ Override pública Cliente mapFieldSet (FIELDSET FIELDSET) lanza BindException { Customercustomer = nuevo cliente (); customer.setId (fieldSet.readLong ( "id")); customer.setFirstName (fieldSet.readString ( "Nombre")); customer.setLastName (fieldSet.readString ( "Apellido")); customer.setBirthday (fieldSet.readString ( "cumpleaños")); devolver al cliente; } }); mapper.afterPropertiesSet (); reader.setLineMapper (mapper); volver lector; } }
ItemWriterDbConfig
com.practice.itemwriterdb empaquetar; importar org.springframework.batch.item. base de datos de .BeanPropertyItemSqlParameterSourceProvider; importar org.springframework.batch.item. base de datos de .JdbcBatchItemWriter; org.springframework.beans.factory.annotation.Autowired importación; org.springframework.context.annotation.Bean importación; org.springframework.context.annotation.Configuration importación; javax.sql.DataSource importación; @Configuration pública clase ItemWriterDbConfig { @Autowired dataSource origen de datos privada; @Bean pública JdbcBatchItemWriter < Cliente > itemWriterDb () { JdbcBatchItemWriter < Cliente > escritor = nueva JdbcBatchItemWriter < Cliente > (); writer.setDataSource (dataSource); writer.setSql ( " de inserción en cliente, nombre, apellido, fecha de nacimiento) (id valores " + "(: Id,: nombre,: lastName, cumpleaños)"); writer.setItemSqlParameterSourceProvider (nuevo BeanPropertyItemSqlParameterSourceProvider <> ()); volver escritor; } }
itemWriterDbDemo
com.practice.itemwriterdb empaquetar; org.springframework.batch.core.Job importación; org.springframework.batch.core.Step importación; org.springframework.batch.core.configuration.annotation.JobBuilderFactory importación; org.springframework.batch.core.configuration.annotation.StepBuilderFactory importación; org.springframework.batch.item.ItemReader importación; org.springframework.batch.item.ItemWriter importación; importar org.springframework.batch.item. presentar .FlatFileItemReader; org.springframework.beans.factory.annotation.Autowired importación; org.springframework.beans.factory.annotation.Qualifier importación; org.springframework.context.annotation.Bean importación; org.springframework.context.annotation.Configuration importación; @Configuration pública clase itemWriterDbDemo { @Autowired jobBuilderFactory JobBuilderFactory privado; @Autowired stepBuilderFactory StepBuilderFactory privado; @Autowired @Qualifier ( "flatFileReader") ItemReader < Cliente > flatFileItemReader; @Autowired @Qualifier ( "itemWriterDb") ItemWriter < ? súper Cliente > itemWriterDb; @Bean pública de empleo itemWriterDemoDbJob () { volver jobBuilderFactory.get ( "itemWriterDemoDbJob") se inicia (itemWriterDbDemoStep ()) build ()..; } @Bean pública Paso itemWriterDbDemoStep () { retorno stepBuilderFactory.get ( "itemWriterDbDemoStep"). < Cliente, el Cliente > trozo ( 10 ) .reader (flatFileItemReader) .writer (itemWriterDb) .construir(); } }
clientes
. 1, John Barrett, 1994-10-19 14:11:03
2, María, Barrett2,1999-10-19 14:11:03
. 3, Lisa, 14:11:03 Barrett3,1995-10-19
resultados operativos :