int deleteall();
} int deleteall();
}
public class mysqlinjector extends autosqlinjector
/* 執行 sql ,動態 sql 參考類 sqlmethod */
string sql = "delete from " + table.gettablename();
string method = "deleteall";
sqlsource sqlsource = languagedriver.createsqlsource(configuration, sql, modelclass);}}
先把剛才自定義的類註冊成bean,然後在全域性策略配置的bean中引用自定義類的bean即可。
..........
經測試,當userdao呼叫deleteall方法時,會刪除tb_user表的所有資料,employeedao呼叫deleteall方法時,會刪除tb_employee表的所有資料。
說明deleteall方法是有效的。
不過在執行這兩個測試時,由於是全表刪除操作,所有要先把執行分析外掛程式關了。
@test
public void testmysqlinjector()
@test
public void testmysqlinjector2()
其實資料並不會輕易的刪除掉,畢竟資料收集不易,所以就有了邏輯刪除。
邏輯刪除: 並不會真正的從資料庫中將資料刪除掉,而是將當前被刪除的這條資料中的乙個邏輯刪除欄位置為刪除狀態,
比如該資料有乙個欄位logic_flag,當其值為1表示未刪除,值為-1表示刪除,那麼邏輯刪除就是將1變成-1。
在資料表中需要新增邏輯刪除字段(logic_flag)
資料庫中邏輯刪除欄位是logic_flag,所以實體類中的logicflag需要用@tablelogic註解標記。
@data
public class user
}
首先定義邏輯刪除的bean:
因為邏輯刪除實際上也是乙個sqlinjector,所以先要把剛才做自定義全域性操作時注入的自定義全域性操作注釋掉,上面**中已有詳細注釋說明。
@test
public void testlogicdelete()
執行該測試,執行刪除操作的時候,真正執行的sql語句是update tb_user set logic_flag=-1 where id=?,就是把邏輯刪除欄位的值設定為-1;
當邏輯刪除欄位的值是-1時再執行查詢操作,sql是select ... from tb_user where id=? and logic_flag=1,所以查詢結果是null。
Mybatis Plus學習筆記
實體類屬性 建立日期 tablefield fill fieldfill.insert private date createtime 更新日期 tablefield fill fieldfill.insert update private date updatetime 3.0版本之前的配置類 c...
Mybatis Plus學習筆記(五) 刪除
本系列部落格其他文章下方鏈結檢視 mybatis plus學習筆記 目錄 很簡單,一句就可以了,返回影響的行數。相當於 debug preparing delete from user where id debug parameters 1088250446457389058 long 和查詢相似的...
Mybatis Plus學習筆記(四) 更新
本系列部落格其他文章下方鏈結檢視 mybatis plus學習筆記 目錄 mp中的updatebyid需要傳入乙個實體 必須有id 不為null的值都會被更改,返回影響的行數。如下 user user new user user.setid 1087982257332887553l user.set...