如何自動填充SQL語句中的公共字段

2022-01-10 16:37:04 字數 1629 閱讀 2098

我們在設計資料庫的時候一定會帶上新增、更新的時間、操作者等審計資訊。 之所以帶這些資訊是因為假如有一天公司的資料庫被人為刪了,儘管可能有資料庫備份可以恢復資料。但是我們仍然需要追蹤到這個事是誰幹的,在什麼時間幹的,具體幹了哪些事等等,方便定責和修補。但是我們變更每條資料都要去顯式變更這些資訊就十分繁瑣,我們希望無感知的來處理這些資訊。

那麼有什麼好的解決思路呢?在spring data框架中提供@createdby@lastmodifiedby來捕捉誰建立或修改的實體以及@createddate@lastmodifieddate來捕捉合適建立或修改了實體。如果你使用相關的框架就可以使用這些特性。那麼其實我們知道國內spring data jdbcspring data jpa並不是主流,主流的是mybatis。那麼我們有哪些選擇?

如果你使用了mybatis plus,可以借助於其自動填充功能來實現。

基於mybatis plus 3.3.0

只需要實現metaobjecthandler介面:

@component

public class mybatisaudithandler implements metaobjecthandler

@override

public void updatefill(metaobject metaobject)

}

然後我們擴充套件一下mybatis plusmodel把公共審計字段放進去並宣告對應的填充策略:

public abstract class baseentity> extends model
最後我們的實體類不再直接繼承model改為上面的baseentity

@data

@equalsandhashcode(callsuper = false)

public class userinfo extends baseentity

}

這樣我們就不用再關心這幾個公共欄位了,當然你可以根據需要新增更多你需要填充的字段。

今天我們sql審計中的一些公共欄位的自動填充的常用方案進行了一些介紹,特別對mybatis plus提供的功能進行了介紹相信能夠幫助你簡化一些樣板**的編寫。但是sql審計並不僅僅這麼簡單,根據你的業務的不同會有不同的設計。如果設計的更加精細化的話,會通過映象或探針的方式採集所有資料庫的訪問流量,並基於sql語法、語義的解析技術,記錄下資料庫的所有訪問和操作行為。有空可以從網上獲取相關的資料進行了解。今天就到這裡,關注:碼農小胖哥,獲取更多的程式設計實戰乾貨。

個人部落格:

SQL語句中公共欄位的自動填充方法

1.前言 我們在設計資料庫的時候一定會帶上新增 更新的時間 操作者等審計資訊。之所以帶這些資訊是因為假如有一天公司的資料庫被人為刪了,儘管可能有資料庫備份可以恢復資料。但是我們仍然需要追蹤到這個事是誰幹的,在什麼時間幹的,具體幹了哪些事等等,方便定責和修補。但是我們變更每條資料都要去顯式變更這些資訊...

sql語句中的序號自動增加

a.直接定義,例如 字段型別設定為int型,種子為1,增量。即可。identity startvalues,addvalues a int identity 35,1 這就表示欄位a的,初始值是35,以1自動增加 也就是說如果你的第一條記錄是,那麼下一條記錄就是36 其中的 35和1 根據自己的實際...

Sql語句中的DDL語句

資料庫模式定義語言ddl data definition language 是用於描述資料庫中要儲存的現實世界實體的語言。主要由create 新增 alter 修改 drop 刪除 和 truncate 刪除 四個關鍵字完成。create database 資料庫名 建立乙個資料庫 create d...