項目中數據庫表設計原則用到了邏輯刪除:數據本身沒有被刪除,只是將deleted字段設置為1
mybatis-plus在邏輯刪除方面的設置如下:
mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl//sql打印 global-config: db-config: logic-delete-field: deleted//邏輯刪除 logic-delete-value: 1 logic-not-delete-value: 0
在實體中,相關的設置如下:
/** * 邏輯刪除 1刪除 0 未刪除 */ @TableLogic private Integer deleted;
測試過,全局配置和在實體中加入@TableLogic注解,可以二選一,因為在實體中加入太麻煩,所以建議全局配置,實體中可以不寫注解,也可以達到邏輯刪除的效果
最后:關於deleted在數據庫的存儲問題,我一直存的類型是tinyint(1) ,這是對的,因為它的選值不是0就是1
今天在用代碼生成器的時候,發現生成的實體是Boolean類型的,查詢資料后的結論是,tinyint(1)對應Boolean
關鍵的問題是,我以為這個1是長度,其實不是,tinyint(1)理論上只能存儲0和1(實測實際上也可以存其他值),要存其他值可以設置為tinyint(4)
建議:以后將只存儲一個數字的字段設置為tinyint(4), 包括邏輯刪除,這樣在用代碼生成器時自動反射為Integer
最后結論:
1. 邏輯刪除用mybatis-plus的全局配置即可
2. 只存儲一個數字的字段設置為tinyint(4), 包括邏輯刪除deleted
