【商城项目18】冗余同步更新
什么是冗余更新?
多对多的时候,尽量不连表查询,在新增时候直接查询出相关信息进行写入。
问题来了。如果更新了brand表或者catelog表怎么办呢?
解决办法:在更新brand表或者catelog表时顺便更新一下冗余表。
拿brand举例:
update时传入新的brand,交给service层
@RequestMapping("/update")
public R update(@Validated({UpdateGroup.class}) @RequestBody BrandEntity brand) {
brandService.updateDetail(brand);
return R.ok();
}
sevice层就先更新自己这张brand表,然后把数据交给冗余表的服务层:
@Override
public void updateDetail(BrandEntity brand) {
this.updateById(brand);
if(!StringUtils.isEmpty(brand.getName())){
//关联其他表的数据
categoryBrandRelationService.updatebrandname(brand.getBrandId(),brand.getName());
}
}
categoryBrandRelationService冗余表的服务层先生成一个对象,然后this.update通过UpdateWrapper有条件的进行更新。
@Override
public void updatebrandname(Long brandId, String name) {
CategoryBrandRelationEntity categoryBrandRelationEntity = new CategoryBrandRelationEntity();
categoryBrandRelationEntity.setBrandId(brandId);
categoryBrandRelationEntity.setBrandName(name);
this.update(categoryBrandRelationEntity,new UpdateWrapper<CategoryBrandRelationEntity>().eq("brand_id",brandId));
}