在座的各位朋友,能帮讲解一下这段代码吗
主要不明白是if 语句,修改为什么要size()判段
1.开始判断了工具类编码这个字段的值是否存在,猜测更新数据时,要保证工具类编码的值是唯一的,但这个并没有在数据库中做唯一校验,所以放在了代码里判断
2.先查询更新的数据中,工具类编码是否存在,返回是集合,通过判断集合元素个数大于1,返回错误结果
3.如果返回的集合中只有一个元素,继续判断,要更新的编码是否和已存在的编码相同
4.最后都没有问题了,更新数据
不过,感觉挺奇怪的
1.更新数据的时候,拿主键ID查到这条数据去更新就好了
2.如果为了保证某个字段的值不是重复的,在数据库中加唯一索引更简单,在代码里可以用这个字段值去数据库搜索,如果出现1条以上的数据,那就说明有重复的,如果只出现1条,不能确实是重复的,可能正好是要更新的这条数据,这里就是让人觉得别扭的地方,原代码中也是这样做的
3.如果这个字段的值是要保持唯一的,那在数据库里是不可能出现2条相同的数据的,那判断size()>1会有结果吗?
即使当前要更新的数据,比如库里的字段值为1,要更新的字段值为2,那也不会在库中找到>1条的数据,就算重复了,也只是找到1条,所以觉得判断size()>1没有必要
4.直接拿工具类编码字段去表中查数据,如果查到一条数据,拿这条数据的id跟要更新的数据的id比对,如果相同没有问题,就是要更新的这条数据,如果不同,就是有重复的,不能更新,返回错误信息,可以debug过程看看
就是个防重的验证,要修改这个东西,先用code去数据库里面查,如果查出来超过一个,说明有重复的;
如果只查出来一个,用查出来的这个和提交修改的这个来比较id是否一样;
如果不一样,说明重复了;
修改;
完了。