作为Spring Batch的新手,我通过探索一些POC取得了很好的进展。我目前正在研究的一个POC是关于从csv文件读取数据并加载到具有父子关系的数据库表中的。弹簧批处理作家父子表数据批量加载
CSV文件现在包含客户和订单信息,如下所示。
- custname1,custaddress1,custzip1,orderdate11,ordervalue11,ordertax11
- custname1,custaddress1,custzip1,orderdate12,ordervalue12,ordertax12
- custname2,custaddress2,custzip2,orderdate21,ordervalue21,ordertax21
- custname2, custaddress2,custzip2,orderdate22,ordervalue22,ordertax22
这些数据将被加载到数据库表中客户,订单,其中CUSTID和的OrderId将自动摹由Oracle序列和表订单具有CustId作为外键维护1对多关系(1客户可以有多个订单)
FlatFileItemReader,FieldSetMapper,ItemWriter是我在这个POC中使用的接口,我正在使用JdbcTemplate用于数据库操作。
我有以下问题。请澄清。
1)如何设计我的Reader bean?
模型类Customer有它的成员,getters和setter方法。与模型类Order相同。
客户类(从CSV文件读取数据)是否包含Order类的成员以及相应的getter,setter方法以表示父子关系?
2)如何检索我正在使用sequence.nextval在INSERT sql中为客户创建它的主键?
3)如何从父数据批量加载存储所有主键,然后将它们用于子表数据加载中的外键?
谢谢。
Shankar, 感谢您的意见。是的,你上面提供的javaworld示例链接,我对此很熟悉。但是,每次在数据库中存在客户记录(在for循环中)时都要进行验证,这并不是我所期待的。我想插入带有自动生成值的客户记录(使用Oracle序列)作为主键;提取PK;用它在子表中插入相应的Order行。 请指导我如何使用JdbcTemplate方法完成。 谢谢。 – VenkatRam