修改报销单的业务逻辑问题
修改报销单业务逻辑没有看懂啊,个人理解如下,请老师指导:
第一步是填写报销单,假设填写成功后,数据库里就有id=1的一条报销单数据,同时也有claim_voucher_id=1的报销单条目数据集合,此时点击修改按钮,将通过报销单id=1,把报销单数据及报销单条目的数据转发到claim_voucher_update.jsp上面,而页面通过隐藏提交的方式提交报销单id和报销单条目id,
<form:hidden path="claimVoucher.id"/>
<form:hidden path="items[${sta.index}].id"/>
则后台claimVouche.getId()这个方法中获取的报销单id也就等于1,查询出的报销单条目(claim_voucher_id)属性为1的条目集合,
List<ClaimVoucherItem> olds = claimVoucherItemDao.selectByClaimVoucher(claimVoucher.getId());
此时页面传递过来的报销单条目集合的id因为是隐藏传递的,那么页面不论怎么增加减少,页面传递过来的报销单条目id不变的,那么此时新传入的集合items集合与旧的集合olds中的id是不是恒相等,即item.getId()==old.getId()这个判断条件恒成立,则isHave判断值这个就是恒为true,
那么下面这个判断是不是恒不能执行
if (!isHave) {
claimVoucherItemDao.delete(old.getId());
}
而下面的两个判断item.getID()是不是恒不为空,恒大于0,因为只要插入了一条报销单的数据,那么条目的id就不为空且恒大于0,那下面的两个方法就只会执行update方法,而不会执行insert方法?
if (item.getId() != null && item.getId() > 0) {
claimVoucherItemDao.update(item);
} else {
claimVoucherItemDao.insert(item);
}
正在回答 回答被采纳积分+1
- 参与学习 人
- 提交作业 323 份
- 解答问题 8263 个
本阶段将带你学习主流框架SSM,以及SpringBoot ,打通成为Java工程师的最后一公里!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星