mysql如何逻辑删除_mysql逻辑删除如何恢复
在項目中,一般會遇到這種情況:邏輯刪除以及多關聯不刪除
邏輯刪除(軟刪除):邏輯刪除就是對要被刪除的數據打上一個刪除標記,通常使用一個is_deleted字段標示行記錄是不是被刪除(或者使用一個status字段代表所謂的“刪除”狀態),在邏輯上是數據是被刪除的,但數據本身是依然存在的。
推薦課程:MySQL教程。
在前端頁面中刪除了,也不顯示了,其實數據庫中并沒有刪除,只是根據了一個狀態字段,0啟動,1停用的思路來達成。
所以邏輯刪除就是只是將一個名為status字段進行更改,來達到前端頁面是否顯示的方式,其數據本身并沒有被刪除,想要恢復只需要改回status字段即可。
思路:
在XML中寫查詢SQL時,多加一個條件,庫中的狀態字段SELECT * FROM md_drainage_basin
and basin_name LIKE concat('%',#{basinName},'%')
AND state = #{state}
ORDER BY sort_order
那我們給前端頁面時候的數據,就要自己在Java代碼中進行默認操作,因為前端是不會在查詢的傳一個狀態碼的,后臺自己生成mdDrainageBasin.setState(0);
List list = mdDrainageBasinMapper.findByQuery(mdDrainageBasin);
默認把狀態0啟動set到實體類中,再進行查詢,這樣前端看到的只有狀態為0的數據
邏輯刪除是把狀態碼進行更新,更新成1,調用update而不是delete,但考慮到多表關系,例如流域下面掛著水系,邏輯刪除一條流域,那下面的水系也要進行邏輯刪除不給與顯示,這時可根據判斷,如果流域下面有相應水系,則不刪除,不然刪除MdDrainageBasin mdDrainageBasin = mdDrainageBasinService.findById(id);
List list = mdWaterSystemMapper.findByWater(mdDrainageBasin.getBasinCode());
if (list.size() > 0) {
return ResponseMsgUtil.failure();
} else {
mdDrainageBasin.setState(1);
mdDrainageBasinService.update(mdDrainageBasin);
return ResponseMsgUtil.success(mdDrainageBasin);
}
根據前端傳入的Id進行查詢哪一條流域,這條流域下面有多少水系,有水系,不刪除,沒水系,刪除
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的mysql如何逻辑删除_mysql逻辑删除如何恢复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python request url 转
- 下一篇: curl查看swift状态命令_前端应该