黑馬瑞吉外賣——(二)
- 2022 年 7 月 12 日
- 筆記
- 黑馬瑞吉外賣
前言
- 這個瑞吉外賣部落格項目系列,用於我個人梳理知識與經驗總結,所以寫的文章不夠體系化,比較零散,大家不喜勿噴😁。
- 接下來幾天我將會更新關於mysql、ssm系列知識體系,敬請期待~🤧。
- 後續我也會將我自己打造的部落格網站開源在這裡,雖然現在已經上線了,但是優化還不夠😒。
一、新增菜品
- 在新增菜品中用到了兩張表,因為既要考慮菜品的口味、又要保存菜品的基本資訊🤷♂️。
- 雖然操作兩張表,但是這個項目並沒有用到聯表查詢,而是分別單獨操作一張表👻。
- 這也是一種思想,也給了我很大的啟發,為了下步我優化個人部落格1.0版本做了鋪墊🤧。
@Transactional
public void saveWithFlavor(DishDto dishDto) {
//保存菜品的基本資訊到菜品表dish
this.save(dishDto);
Long dishId = dishDto.getId(); //菜品id
List<DishFlavor> flavors = dishDto.getFlavors();
flavors = flavors.stream().map((item)-> {
item.setDishId(dishId);
return item;
}).collect(Collectors.toList());
//保存菜品口味數據到菜品口味表dish_flavor
dishFlavorService.saveBatch(flavors);
}
- 同時對於多表需要查出來的數據,都用了JavaBean的思想,單獨封裝了一個dto類,用來接收dao層的數據。
- 在Controller返回數據類型的時候,都是用的統一RESTful風格,對數據進行了統一的封裝,同時還有提示資訊,也方便了前後端的處理。
- 前端的每個請求都是通過ajax請求。
二、刪除套餐
@Override
@Transactional
public void removeWithDish(List<Long> ids) {
//查詢套餐狀態,確定是否可用刪除
LambdaQueryWrapper<SetMeal> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(SetMeal::getId,ids);
queryWrapper.eq(SetMeal::getStatus,1);
int count = this.count(queryWrapper);
if(count > 0) {
//如果不能刪除,拋出一個異常業務異常
throw new CustomException("套餐正在售賣中,不能刪除");
}
//如果可以刪除,先刪除套餐表中的數據
this.removeByIds(ids);
//刪除關係表中的數據
LambdaQueryWrapper<SetmealDish> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(SetmealDish::getSetmealId,ids);
setMealDishService.remove(lambdaQueryWrapper);
}
- 我就用部落格和分類進行舉例說明吧。
- 一個標籤:Java基礎知識。在這個標籤下面會有很多個部落格,如果我們要直接刪除標籤那肯定是不行的,這樣部落格就沒有了標籤,而直接刪除部落格卻是可以的。
- 這裡的資料庫設置就是將標籤的id保存在部落格資料庫表中。在我們進行刪除的時候需要判斷,同時可以定一個異常類。
三、結尾
- 對於瑞吉外賣項目內容就總結這麼多,若想深入學習等待後續更新。
- 我將會繼續更新關於Java方向的學習知識,感興趣的小夥伴可以關注一下。
- 文章寫得比較走心,用了很長時間,絕對不是copy過來的!
- 尊重每一位學習知識的人,同時也尊重每一位分享知識的人。
- 😎你的點贊與關注,是我努力前行的無限動力。🤩