乐优商城第十一天(商品的修改)

修改的业务逻辑,这是原始的代码,不够严谨

//首先根据spuid删除sku
Sku sku = new Sku();
sku.setSpuId(goods.getId());
List<Sku> oldSkus = skuMapper.select(sku);
for (Sku s : oldSkus) {
    skuMapper.deleteByPrimaryKey(sku.getId());
    stockMapper.deleteByPrimaryKey(sku.getId());
}
//更新sku
Spu spu = new Spu();
BeanUtils.copyProperties(goods, spu);
long currentTimeMillis = System.currentTimeMillis();
Date date = new Date(currentTimeMillis);

方法二,用通用mapper的方式,将id的结合转为字符串

Sku sku = new Sku();
sku.setSpuId(goods.getId());
List<Sku> oldSkus = skuMapper.select(sku);
ArrayList<Long> skuIds = new ArrayList<>();
if (!CollectionUtils.isEmpty(oldSkus)) {
    for (Sku s : oldSkus) {
        skuIds.add(s.getId());
    }
    String str = StringUtils.join(oldSkus, ",");
    this.stockMapper.deleteByIds(str);
    this.skuMapper.deleteByIds(str);
}
public interface SkuMapper extends Mapper<Sku>,DeleteByIdsMapper<Sku> {

方式三:example的方式

Sku sku = new Sku();
sku.setSpuId(goods.getId());
List<Sku> oldSkus = skuMapper.select(sku);
if (!CollectionUtils.isEmpty(oldSkus)){
    //得到所有的id的集合
    ArrayList<Long> ids = new ArrayList<>();
    for (Sku skus : oldSkus) {
        ids.add(skus.getId());
    }
    //删除stock
    Example example = new Example(Stock.class);
    example.createCriteria().andIn("sku_id",ids);
    this.stockMapper.deleteByExample(example);
    //删除spu
    this.skuMapper.delete(sku);
}
sku不用遍历删除,直接根据spu的id删除即可
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值