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

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

//首先根据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删除即可

猜你喜欢

转载自blog.csdn.net/qpc672456416/article/details/80565679
今日推荐