我试图让这尽可能简单。我是春季批次的新手,我有一个小小的理解如何将弹簧项目联系在一起,特别是涉及多步骤工作但是这是我的逻辑而不是代码(简化)而且我不知道在春季批量中恭维它,所以我认为这可能是正确的结构
但如果我错了,请纠正我,如果可能请提供一些代码。 非常感谢你
的 LOGIC: 的
sql = "select * from MONEY where id= user input"; //the user will input the condition
while (records are available) {
int currency= resultset(currency column);
sql= "select * from DETAILS where D_currency = currency";
while (records are available) {
int amount= resultset(amount column);
string money_flag= resultset(money_type column);
sql= "select * from PROFIT where Mtypes = money_type";
while (records are available) {
int revenue= resultset(revenue);
if (money_type== 1) {
int net_profit= revenue * 3.75;
sql = "update PROFIT set Nprofit = net_profit";
}
else (money_type== 2) {
int net_profit = (revenue - 5 ) * 3.7 ;
sql = "update PROFIT set Nprofit = net_profit";
}
}
sql="update DETAILS set detail_falg = 001 ";
}
sql = "update MONEY set currency_flag = 009";
}
答案 0 :(得分:1)
要将其配置为“常规”弹簧批量配置,如果可能,您需要将三个环变平为一个。
也许是一个sql语句,它会在一个类似于;
的循环中返回它select p.revenue, d.amount from PROFIT p, DETAILS d, MONEY m where p.MTypes = d.money_type and d.D_currency = m.currency and m.id = :?
一旦你“扁平化”它,你就会陷入更大的“传统”读取/处理/写入块模式,其中读取器从结果集中检索记录,处理器执行money_type逻辑,并且写入然后执行'update'语句。
答案 1 :(得分:1)
检查ItemReaderAdapter的使用,您可以将所有SQL放在某种DAO中,该DAO可以返回包含计算所需信息的聚合对象列表。
或者
您可以使用CompositeItemReader模式。您基本上将多个ItemReader定义为一个主ItemReader。 read()方法将在进入处理器/写入器阶段之前调用所有内部ItemReader。
我可以发布一些例子..但我必须离开:-( ..
如果您需要一些示例,请发表评论