为什么item.getId()>0就表示这个报销单明细已经存在数据库里面呢?

为什么item.getId()>0就表示这个报销单明细已经存在数据库里面呢?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
芝芝兰兰 2019-09-20 14:37:53

同学你好。

1、item.getId()>0并不能判断页面提交的条目集合是否为空呢,如果items为null,那么从一开始循环就会有空指针异常呢 


2、id>0是一个在数据库中的合理的id值,而直接点击“+”生成的新条目是没有id值的,所以id值>0就证明它曾经添加过数据库。这里就没有必要直接和已存在的条目进行对比了。


3、updeta方法中共有两个和items有关的for循环:

1)olds是数据库中原有的条目,每次循环old都确定一个old是否在页面提交的条目集合items中存在,如果不存在,则删除。也就是说模拟页面上的“×”操作。

http://img1.sycdn.imooc.com//climg/5d847138095399d511260459.jpg

2)items是从页面提交来的条目集合,其中只含有两种条目,一种是数据库中已有的,一种是点击“+”新增的。这里直接循环items,对每个item进行id判断,如果item是展示时从数据库取出的,那么一定有id值,并且id值是自增的,所以item中Id>0的是当时展示出来的,而通不过if的就是页面上点击“+”新增的

http://img1.sycdn.imooc.com//climg/5d84727b0949253709140238.jpg

http://img1.sycdn.imooc.com//climg/5d8472dd097611aa05610236.jpg

如果解答了同学的疑问,望采纳~

祝学习愉快~

芝芝兰兰 2019-08-04 16:08:04

同学你好。因为我们在数据库中为id设置了主键自增。主键自增是从0开始的。所以已经在数据库中的条目是有id的并且id值一定是大于0的。

祝学习愉快~

  • 但items是页面提交的条目集吧?跟数据库的条目好像无关吧?
    2019-09-20 02:37:57
  • 同学你好。跟数据库是有关系的。items是页面提交过来的报销单条目集合。因为是对展示出的条目进行的修改。所以items中可能有一部分是数据库中已有的,有一些是新增的条目,还有数据库中有但items中没有的。对条目部分的update操作就是在比较这些,更新数据库中的内容使其和页面提交的items中的内容相同哦~祝学习愉快~
    2019-09-20 11:03:05
  • 1、我知道items中可能有一部分是数据库中已有的,但item.getId()>0的作用只是判断页面提交的条目集合是否为空而已吧,这里有没有与数据库的条目集进行对比,你怎么知道是哪部分已经存在了的 2、所以我觉得这里是不是还应该与数据库原有条目集进行一次对比呀? 麻烦老师分析一下,谢谢。
    2019-09-20 12:30:44
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师