少しフォロービデオデモを行います
table文の構築
CREATE テーブル顧客( ID BIGINT PRIMARY KEY 、 firstNameのVARCHAR(50 )、 lastNameのVARCHAR(50 )、 誕生日VARCHAR(50 ) )
ディレクトリ構造
顧客エンティティクラス
パッケージcom.practice.itemwriterdb。 パブリッククラスカスタマー{ プライベートロングID。 プライベート文字列firstNameの; プライベート文字列lastNameの。 プライベート文字列の誕生日。 公衆 ロングのgetId(){ 戻りID。 } 公共ボイドSETID(長いID){ this.id = ID。 } パブリック文字列getFirstName(){ 戻りのfirstNameと、 } 公共ボイドsetFirstName(文字列firstNameの){ this.firstName = firstNameの。 } パブリック文字列getLastNameの(){ 戻りlastNameのを。 } 公共ボイドsetLastName(文字列lastNameの){ this.lastName = lastNameの。 } パブリック文字列getBirthday(){ リターン誕生日; } 公共ボイドsetBirthday(文字列の誕生日){ this.birthday = 誕生日。 } @Override パブリック文字列のtoString(){ 戻り "顧客{" + "ID = " + ID + "のfirstName = ' " +のfirstName + ' \ '' + "とLastName = ' " + lastNameの+ ' \ '' + "誕生日= ' " +誕生日+ ' \ '' + ' } ' 。 } }
DemoApplication
パッケージcom.practice.itemwriterdb。 輸入org.springframework.batch.core.configuration.annotation.EnableBatchProcessing。 輸入org.springframework.boot.SpringApplication。 輸入org.springframework.boot.autoconfigure.SpringBootApplication。 @SpringBootApplication @EnableBatchProcessing パブリッククラスDemoApplication { 公共の静的な無効メイン(文字列[] 引数){ SpringApplication.run(DemoApplication.class、引数)。 } }
FlatFileReaderConfig
パッケージcom.practice.itemwriterdb。 輸入org.springframework.batch.core.configuration.annotation.StepScope; org.springframework.batch.itemインポートします。ファイル.FlatFileItemReader; org.springframework.batch.itemインポートします。ファイル.mapping.DefaultLineMapper; org.springframework.batch.itemインポートします。ファイル.mapping.FieldSetMapper; org.springframework.batch.itemインポートします。ファイル.transform.DelimitedLineTokenizer; org.springframework.batch.itemインポートします。ファイル.transform.FieldSet; 輸入org.springframework.context.annotation.Bean; 輸入org.springframework.context.annotation.Configuration。 輸入org.springframework.core.io.ClassPathResource。 輸入org.springframework.validation.BindException。 @Configuration パブリッククラスFlatFileReaderConfig { @Bean 公共 FlatFileItemReader <商品> flatFileReader(){ FlatFileItemReader <商品>リーダー=新しいFlatFileItemReader <商品> (); reader.setResource(新ClassPathResource( "customers.txt")); // reader.setLinesToSkip(1 )。 // 解析数据 DelimitedLineTokenizerトークナイザ新しいDelimitedLineTokenizer();= customer.setId(fieldSet.readLong( "ID"))。 tokenizer.setNames(新しい文字列[] { "ID"、 "firstNameの"、 "lastNameの"、 "誕生日"})。 DefaultLineMapper <お客様>マッパー=新しいDefaultLineMapper <> (); mapper.setLineTokenizer(トークナイザ)。 mapper.setFieldSetMapper(新しいFieldSetMapper <商品> (){ @Override 公共顧客mapFieldSet(フィールドセットフィールドセット)はBindException {スロー 顧客顧客= 新しい顧客を(); customer.setFirstName(fieldSet.readString( "firstNameの")); customer.setLastName(fieldSet.readString( "lastNameの")); customer.setBirthday(fieldSet.readString( "誕生日")); 戻り値の顧客; } })。 mapper.afterPropertiesSet(); reader.setLineMapper(マッパー) リターンリーダー; } }
ItemWriterDbConfig
パッケージcom.practice.itemwriterdb。 org.springframework.batch.itemインポートします。データベース.BeanPropertyItemSqlParameterSourceProvider; org.springframework.batch.itemインポートします。データベース.JdbcBatchItemWriter; 輸入org.springframework.beans.factory.annotation.Autowired; 輸入org.springframework.context.annotation.Bean; 輸入org.springframework.context.annotation.Configuration。 インポートするjavax.sql.DataSource; @Configuration パブリッククラスItemWriterDbConfig { @Autowired プライベートデータソースのdataSource。 @Bean 公共 JdbcBatchItemWriter <商品> itemWriterDb(){ JdbcBatchItemWriter <お客様>ライター=新しいJdbcBatchItemWriter <顧客> (); writer.setDataSource(データソース)。 writer.setSql( " インサート に顧客(ID、FirstNameとlastNameの、誕生日)の値 " + "(:ID:FirstNameと:lastNameの、:誕生日)")。 writer.setItemSqlParameterSourceProvider(新しいBeanPropertyItemSqlParameterSourceProvider <> ()); リターン・ライター。 } }
itemWriterDbDemo
パッケージcom.practice.itemwriterdb。 輸入org.springframework.batch.core.Job。 輸入org.springframework.batch.core.Step; 輸入org.springframework.batch.core.configuration.annotation.JobBuilderFactory。 輸入org.springframework.batch.core.configuration.annotation.StepBuilderFactory。 輸入org.springframework.batch.item.ItemReader。 輸入org.springframework.batch.item.ItemWriter; org.springframework.batch.itemインポートします。ファイル.FlatFileItemReader; 輸入org.springframework.beans.factory.annotation.Autowired; 輸入org.springframework.beans.factory.annotation.Qualifier; 輸入org.springframework.context.annotation.Bean; 輸入org.springframework.context.annotation.Configuration。 @Configuration パブリッククラスitemWriterDbDemo { @Autowired プライベートJobBuilderFactory jobBuilderFactoryを。 @Autowired プライベートStepBuilderFactory stepBuilderFactory。 @Autowired @Qualifier ( "flatFileReader") ItemReader <お客様> flatFileItemReader。 @Autowired @Qualifier ( "itemWriterDb") ItemWriter <?スーパーお客様> itemWriterDb。 @Bean 公共職業itemWriterDemoDbJob(){ リターンjobBuilderFactory.get( "itemWriterDemoDbJob")を開始(itemWriterDbDemoStep())ビルド()。。。 } @Bean 公共ステップitemWriterDbDemoStep(){ リターン stepBuilderFactory.get( "itemWriterDbDemoStep")。<顧客、顧客>チャンク(10 ) .reader(flatFileItemReader) .writer(itemWriterDb) .build(); } }
顧客
。1、ジョン、バレット、1994年10月19日午後2時11分03秒
2、マリア、Barrett2,1999-10-19午後2時11分03秒
。3、リサ、Barrett3,1995-10-19午後2時11分03秒
の営業成績: