一:邏輯刪除
邏輯刪除的本質是修改操作,所謂的邏輯刪除其實並不是真正的刪除,而是在表中將對應的是否刪除標識(is_delete)或者說是狀態字段(status)做修改操作。比如0是未刪除,1是刪除。在邏輯上數據是被刪除的,但數據本身依然存在庫中。
對應的SQL語句:update 表名 set is_delete = 1 where id = 1;語句表示,在該表中將id為1的信息進行邏輯刪除,那么客戶端進行查詢id為1的信息,服務器就不會提供信息。倘若想繼續為客戶端提供該信息,可將 is_delete 更改為 0 。
二:物理刪除
物理刪除就是真正的從數據庫中做刪除操作了。
對應的SQL語句:delete from 表名 where 條件;執行該語句,即為將數據庫中該信息進行徹底刪除,無法恢復。
關於回收站的原理,其實就是利用了邏輯刪除,對於刪除文件進入回收站的本質只是在操作系統的幫助下對文件加上了 某個標記,資源管理器中對含有這種標記的文件不會顯示。當從回收站恢復的時候只是移除了加上的標記而已,而清空回收站就是進行了物理刪除。
而商城網站,如淘寶,京東…會大量使用邏輯刪除進行操作數據庫。
切記,作為編程人員對於刪除,一定要慎之又慎,一定要再三考慮。特別是物理刪除,可以的話,就忘掉他吧。
= =!!!
附上工作中的代碼,並不難,下次忘了也可以再翻看。
<!--邏輯查詢方法--> <select id="findList" resultType="HpjZlqd"> select * from HPJ_ZLQD a where a.status = 0 <if test="name != null and name != ''"> and a.name like '%'||#{name}||'%' </if> <if test="xmlx != null and xmlx != ''"> and a.xmlx = #{xmlx} </if> <if test="zllb != null and zllb != ''"> and a.zllb = #{zllb} </if> order by a.create_Date desc </select> <!--邏輯刪除方法--> <update id="logicalDelete" parameterType="com.jeesite.modules.zlqd.entity.HpjZlqd"> update HPJ_ZLQD set status = 1 where id = #{id} </update>
————————————————
原文鏈接:https://blog.csdn.net/weixin_43860058/java/article/details/84713222