CREATE TABLE account(accountID INT IDENTITY PRIMARY KEY, 
   balance DOUBLE, interestRate DOUBLE, customerID INT);
  
  
spring.datasource.url=jdbc:hsqldb:hsql://localhost/
spring.datasource.username=SA
spring.datasource.password=
spring.datasource.driver-class-name=org.hsqldb.jdbcDriver        


12,1000.00,0.03,1
13,2000.00,0.02,2
14,3000.00,0.04,0             

@Bean
public DataSource dataSource()
{
    DataSourceBuilder dsb = DataSourceBuilder.create();
    dsb.url("jdbc:hsqldb:hsql://localhost/");
    dsb.driverClassName("org.hsqldb.jdbcDriver");
    dsb.username("SA");
    dsb.password("");
    
    return dsb.build();
}



DelimitedLineTokenizer tokenizer = 
        new DelimitedLineTokenizer();
tokenizer.setDelimiter(",");
tokenizer.setNames(new String[]{"accountID",
        "balance","interestRate","customerID"});

        		
BeanWrapperFieldSetMapper<Account> fieldSetMapper = 
        new BeanWrapperFieldSetMapper<Account>(); 
fieldSetMapper.setTargetType(Account.class);             


DefaultLineMapper<Account> lineMapper = 
        new DefaultLineMapper<Account>();
lineMapper.setLineTokenizer(tokenizer);
lineMapper.setFieldSetMapper(fieldSetMapper);
return lineMapper;             



FlatFileItemReader<Account> itemReader = 
        new FlatFileItemReader<Account>();
itemReader.setLineMapper(lineMapper());
itemReader.setResource(res);
return itemReader;		             


final String sql = 
    "INSERT INTO account " +
    "(creationDate,balance,interestRate,customerID) " +
    "VALUES(:creationDate,:balance,:interestRate,:customerID)";


JdbcBatchItemWriter<Account> itemWriter = 
        new JdbcBatchItemWriter<Account>();
itemWriter.setDataSource(dataSource());
itemWriter.setSql(sql);

itemWriter.setItemSqlParameterSourceProvider(
        new BeanPropertyItemSqlParameterSourceProvider
           <Account>());
return itemWriter;             



