Faites une démonstration vidéo peu de suivi
La construction de la déclaration de table
CREATE table de client ( id BIGINT PRINCIPAL KEY , prenom VARCHAR ( 50 ), lastName VARCHAR ( 50 ), anniversaire VARCHAR ( 50 ) )
Structure de répertoire
classe d'entité client
emballer com.practice.itemwriterdb; publique classe client { privée longue id; private String prenom; private String lastName; private String anniversaire; publique à long getId () { retour id; } Publique setId void ( longue id) { this.id = id; } Publique Chaîne getFirstName () { retour prenom; } Publique setFirstName vide (String prenom) { this.firstName = prenom; } publique Chaîne getLastName () { retour lastName; } Publique setLastName vide (String lastName) { this.lastName = lastName; } Publique Chaîne getBirthday () { retour anniversaire; } Publique setBirthday void (anniversaire String) { this.birthday = anniversaire; } @Override publique String toString () { retour "client {" + "id = " + id + "Prenom = ' " + prenom + ' \ '' + "lastName = ' " + lastName + ' \ '' + "anniversaire = ' " + anniversaire + ' \ '' + ' } ' ; } }
DemoApplication
emballer com.practice.itemwriterdb; importation org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; importation org.springframework.boot.SpringApplication; importation org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @EnableBatchProcessing publique classe DemoApplication { publique static void main (String [] args) { SpringApplication.run (DemoApplication.class, args); } }
FlatFileReaderConfig
emballer com.practice.itemwriterdb; importation org.springframework.batch.core.configuration.annotation.StepScope; importer org.springframework.batch.item. déposer .FlatFileItemReader; importer org.springframework.batch.item. déposer .mapping.DefaultLineMapper; importer org.springframework.batch.item. déposer .mapping.FieldSetMapper; importer org.springframework.batch.item. déposer .transform.DelimitedLineTokenizer; importer org.springframework.batch.item. déposer .transform.FieldSet; importation org.springframework.context.annotation.Bean; importation org.springframework.context.annotation.Configuration; importation org.springframework.core.io.ClassPathResource; importation org.springframework.validation.BindException; @Configuration publique classe FlatFileReaderConfig { @Bean publique FlatFileItemReader < Client > flatFileReader () { FlatFileItemReader < Client > lecteur = nouveau FlatFileItemReader < Client > (); reader.setResource (nouveau ClassPathResource ( "Customers.txt")); // reader.setLinesToSkip ( 1 ); // 解析数据 DelimitedLineTokenizer tokenizer = nouveau DelimitedLineTokenizer (); tokenizer.setNames (new String [] { "id", "prenom", "lastName", "anniversaire"}); DefaultLineMapper < Client > mappeur = nouveau DefaultLineMapper <> (); mapper.setLineTokenizer (tokenizer); mapper.setFieldSetMapper (nouveau FieldSetMapper < Client > () { @Override publique (FieldSet FIELDSET) mapFieldSet Client lance BindException { Client client = nouveau client (); customer.setId (fieldSet.readLong ( "id")); customer.setFirstName (fieldSet.readString ( "firstName")); customer.setLastName (fieldSet.readString ( "Nom")); customer.setBirthday (fieldSet.readString ( "anniversaire")); retour à la clientèle; } }); mapper.afterPropertiesSet (); reader.setLineMapper (mapper); retourner lecteur; } }
ItemWriterDbConfig
emballer com.practice.itemwriterdb; importer org.springframework.batch.item. base de données .BeanPropertyItemSqlParameterSourceProvider; importer org.springframework.batch.item. base de données .JdbcBatchItemWriter; importation org.springframework.beans.factory.annotation.Autowired; importation org.springframework.context.annotation.Bean; importation org.springframework.context.annotation.Configuration; importation javax.sql.DataSource; @Configuration publique classe ItemWriterDbConfig { @Autowired DataSource privée dataSource; @Bean publique JdbcBatchItemWriter < Client > itemWriterDb () { JdbcBatchItemWriter < Client > auteur = nouveau JdbcBatchItemWriter < Client > (); writer.setDataSource (dataSource); ( "writer.setSql insert dans le client (id, nom, prénom, anniversaire) valeurs " + "(: id,: firstName, lastName,: anniversaire)"); writer.setItemSqlParameterSourceProvider (nouveau BeanPropertyItemSqlParameterSourceProvider <> ()); retour écrivain; } }
itemWriterDbDemo
emballer com.practice.itemwriterdb; importation org.springframework.batch.core.Job; importation org.springframework.batch.core.Step; importation org.springframework.batch.core.configuration.annotation.JobBuilderFactory; importation org.springframework.batch.core.configuration.annotation.StepBuilderFactory; importation org.springframework.batch.item.ItemReader; importation org.springframework.batch.item.ItemWriter; importer org.springframework.batch.item. déposer .FlatFileItemReader; importation org.springframework.beans.factory.annotation.Autowired; importation org.springframework.beans.factory.annotation.Qualifier; importation org.springframework.context.annotation.Bean; importation org.springframework.context.annotation.Configuration; @Configuration publique classe itemWriterDbDemo { @Autowired JobBuilderFactory privée jobBuilderFactory; @Autowired StepBuilderFactory privé stepBuilderFactory; @Autowired @Qualifier ( "flatFileReader") ItemReader < Client > flatFileItemReader; @Autowired @Qualifier ( "itemWriterDb") ItemWriter < ? super - client > itemWriterDb; @Bean publique Job itemWriterDemoDbJob () { retour jobBuilderFactory.get ( "itemWriterDemoDbJob") départ (itemWriterDbDemoStep ()) build ().. } @Bean publiqueÉtape itemWriterDbDemoStep () { retour stepBuilderFactory.get ( "itemWriterDbDemoStep"). < Client, > gros morceau ( 10 ) .reader (flatFileItemReader) .writer (itemWriterDb) .build (); } }
les clients
. 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
résultats d'exploitation :