18 Haziran 2018 Pazartesi

SpringBatch DefaultLineMapper Sınıfı - Bir Satırı Java Nesnesine Çevirir

Giriş
Bir satırın nasıl parçalanacağını belirtir. Tokenizer ve Mapper vermek gerekir. 
- Tokenizer olarak DelimitedLineTokenizer kullanılır. 
- Mapper olarak org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper veya 
FieldSetMapper'dan  kalıtan bir sınıf kullanılır. Açıklaması şöyle
The `BeanWrapperFieldSetMapper` is used to map the data to a Java object.
setLineTokenizer metodu - DelimitedLineTokenizer 
Örnek
Şöyle yaparız
//READING FROM CSV FILE MAPPER
public DefaultLineMapper<Customer> soatoRowMapper(){
var defaultLineMapper = new DefaultLineMapper<Customer>();
//set tokenizer var delimitedLineTokenizer = new DelimitedLineTokenizer(); delimitedLineTokenizer.setNames("id", "par_id", "soato_id","level"); defaultLineMapper.setLineTokenizer(delimitedLineTokenizer); //set field mapper var beanWrapperFieldSetMapper = new BeanWrapperFieldSetMapper<Customer>();
beanWrapperFieldSetMapper.setTargetType(Customer.class);
defaultLineMapper.setFieldSetMapper(beanWrapperFieldSetMapper); return defaultLineMapper; }
- DelimitedLineTokenizer ayraç olarak "," karakterini kullanır. setNames() çağrısı ile her token'ın hangi isimle saklanacağı belirtilir.

- BeanWrapperFieldSetMapper ise belirtilen tipten nesneyi yaratır ve setNames() ile belirtilen alanları doldurur

setFieldSetMapper metodu
Örnek
Şöyle yaparız. Bu örnek yukarıdaki ile aynı
DefaultLineMapper<String> lineMapper = new DefaultLineMapper<>();

DelimitedLineTokenizer lineTokenizer = new DelimitedLineTokenizer();
lineTokenizer.setNames("name");
lineMapper.setLineTokenizer(lineTokenizer);

BeanWrapperFieldSetMapper<String> fieldSetMapper = new BeanWrapperFieldSetMapper<>;
fieldSetMapper.setTargetType(String.class);
lineMapper.setFieldSetMapper(fieldSetMapper);


Hiç yorum yok:

Yorum Gönder