请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于modifyShop方法的两个疑问

疑问一:针对以下代码
Shop tempShop = shopDao.queryByShopId(shop.getShopId());
if (tempShop.getShopImg() != null) {
ImageUtil.deleteFileOrPath(tempShop.getShopImg());
}
上面这段代码可以修改吗?第一行删掉,另外两行修改如下,可以达到精简的效果:
if (shop.getShopImg()!=null){
ImageUtil.deleteFileOrPath(shop.getShopImg());
}

疑问二:针对以下代码
//2.更新店铺信息
shop.setLastEditTime(new Date());
int effetedNum = shopDao.updateShop(shop);
if (effetedNum <= 0) {
return new ShopExecution(ShopStateEnum.INNER_ERROR);
} else {
shop=shopDao.queryByShopId(shop.getShopId());
return new ShopExecution(ShopStateEnum.SUCCESS, shop);
}
如果出现effetedNum <= 0成立,事务将不会回退,返回一个ShopExecution对象,而此时店铺图片已换、但数据库中图片名称未修改成功,怎么办?另外,倒数第二行的代码( shop=shopDao.queryByShopId(shop.getShopId());)是不是没有必要?

正在回答

1回答

翔仔 2020-04-14 01:22:28

同学好,第一个没懂,为什么要删掉?你如果不获取到原先的值,和前端的值做merge的话,原来的数据是不是可能会被覆盖掉了?

第二个,确实这部分没有完善,<0需要抛出异常才可以。倒数第二行代码,针对这里来讲,确实没必要,但是如果你要给前端返回一个完整的更新信息的话,就需要了。这里可以去掉

0 回复 有任何疑惑可以回复我~
  • 提问者 慕沐8221787 #1
    对于第一个问题,我的意思是这样的:这段代码的目的就是判断数据库中原本的店铺是否添加了图片,以图片地址是否为空作为判断依据。不需要声明tempShop这个变量,从前端页面已收集到原有店铺信息了(即代码中的shop对象),直接对这个已收集到的shop进行判断就可以了。
    对于第二个问题,去掉倒数第二行,保留最后一行,同样能给前端返回一个完整的更新信息,因为此时的shop对象属性都已经更新了。
    请问老师,以上分析的对吗?
    回复 有任何疑惑可以回复我~ 2020-04-14 08:48:53
  • 翔仔 回复 提问者 慕沐8221787 #2
    第一个问题,确实是可以这样的,但是这些商品信息的大小和只获取图片的信息的大小没太大差别,所以直接复用接口进行获取也是可以的。
    第二个问题,确实是的,没问题
    回复 有任何疑惑可以回复我~ 2020-04-14 21:56:50
  • 提问者 慕沐8221787 #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-04-14 22:33:05
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信