在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    Mybatis plus通用字段自動(dòng)填充的最佳實(shí)踐總結(jié)

    在進(jìn)行持久層數(shù)據(jù)維護(hù)(新增或修改)的時(shí)候,我們通常需要記錄一些非業(yè)務(wù)字段,比如:create_time、update_time、update_by、create_by等用來維護(hù)數(shù)據(jù)記錄的創(chuàng)建時(shí)間、修改時(shí)間、修改人、創(chuàng)建人信息。通常情況下我們需要對(duì)這些字段進(jìn)行手動(dòng)賦值。賦值的過程也比較冗余,都是重復(fù)操作。

    • 通常是為create_time賦值為系統(tǒng)的當(dāng)前時(shí)間、update_time賦值為系統(tǒng)修改操作執(zhí)行時(shí)的當(dāng)前時(shí)間。
    • create_by(創(chuàng)建人)、update_by(修改人)賦值為當(dāng)前的登錄用戶的用戶名

    xxxYyyZzz.setUpdateBy(“zimug”); //數(shù)據(jù)記錄更新操作人xxxYyyZzz.setUpdateTime(new Date()); //數(shù)據(jù)記錄更新操作的時(shí)間

    Mybatis plus 為我們提供了一種一勞永逸的自動(dòng)化賦值方式。

    一、調(diào)整數(shù)據(jù)庫(kù)表結(jié)構(gòu)

    以mysql數(shù)據(jù)庫(kù)環(huán)境下的xxx_yyy_zzz表為例,在原有的表字段的基礎(chǔ)上,添加下面的四個(gè)通用數(shù)據(jù)維護(hù)字段。

    ALTER TABLE `xxx_yyy_zzz` ADD COLUMN `create_by` VARCHAR(64) NOT NULL COMMENT ‘本條記錄創(chuàng)建人’;ALTER TABLE `xxx_yyy_zzz` ADD COLUMN `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘本條記錄創(chuàng)建時(shí)間’;ALTER TABLE `xxx_yyy_zzz` ADD COLUMN `update_by` VARCHAR(64) NOT NULL COMMENT ‘本條記錄修改人’;ALTER TABLE `xxx_yyy_zzz` ADD COLUMN `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘本條記錄的修改時(shí)間’;

    二、通用維護(hù)信息父類-自動(dòng)賦值的字段

    既然我們對(duì)某一張表的數(shù)據(jù)進(jìn)行新增創(chuàng)建、修改信息的維護(hù),我們的實(shí)體類也要做必要的調(diào)整。為了避免為每一個(gè)實(shí)體類都加上這四個(gè)成員變量,我們定義一個(gè)父類BaseColumns。

    @Datapublic class BaseColumns { /** * 本條記錄創(chuàng)建人,insert操作的時(shí)候自動(dòng)為該字段賦值 */ @TableField(fill = FieldFill.INSERT private String createBy; /** * 本條記錄創(chuàng)建時(shí)間,insert操作的時(shí)候自動(dòng)為該字段賦值 */ @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; /** * 本條記錄更新人,insert或update操作的時(shí)候自動(dòng)為該字段賦值,select = false */ @TableField(fill = FieldFill.INSERT_UPDATE,select = false) private String updateBy; /** * 本條記錄更新時(shí)間,insert或update操作的時(shí)候自動(dòng)為該字段賦值,select = false */ @TableField(fill = FieldFill.INSERT_UPDATE,select = false) private LocalDateTime updateTime;}

    • fill = FieldFill.INSERT表示insert操作的時(shí)候自動(dòng)為該字段賦值
    • fill = FieldFill.INSERT_UPDATE表示nsert或update操作的時(shí)候自動(dòng)為該字段賦值
    • select = false表示在使用Mybatis Wrapper條件構(gòu)造器進(jìn)行查詢的時(shí)候,不查詢這個(gè)屬性對(duì)應(yīng)的數(shù)據(jù)庫(kù)字段。數(shù)據(jù)修改時(shí)間操作人通常對(duì)于運(yùn)維更有意義,所以通常不需要展示在web頁(yè)面上,所以通常select查詢的時(shí)候不包含它。(這個(gè)內(nèi)容與我們本機(jī)的字段自動(dòng)填充沒有太直接的聯(lián)系,但是在實(shí)際應(yīng)用中是有意義的)

    三、實(shí)體類的實(shí)現(xiàn)

    下文實(shí)體類XxxYyyZzz對(duì)應(yīng)數(shù)據(jù)庫(kù)中的xxx_yyy_zzz表,除了以上四個(gè)通用字段,xxx_yyy_zzz表還包含其他的業(yè)務(wù)字段。

    @Data@EqualsAndHashCode(callSuper = true)public class XxxYyyZzz extends BaseColumns { //其他的屬性字段}

    四、自動(dòng)賦值的規(guī)則

    @Componentpublic class MybastisColumnsHandler implements MetaObjectHandler { @Resource private JwtTokenUtil jwtTokenUtil; //我的工具類,用于從Token令牌中獲取登陸人信息 //設(shè)置數(shù)據(jù)新增時(shí)候的,字段自動(dòng)賦值規(guī)則 @Override public void insertFill(MetaObject metaObject) { this.strictInsertFill(metaObject, “createTime”, LocalDateTime.class, LocalDateTime.now()); this.strictInsertFill(metaObject, “updateTime”, LocalDateTime.class, LocalDateTime.now()); this.strictInsertFill(metaObject, “createBy”, String.class, jwtTokenUtil.getUsernameFromToken()); this.strictUpdateFill(metaObject, “updateBy”, String.class, jwtTokenUtil.getUsernameFromToken()); } //設(shè)置數(shù)據(jù)修改update時(shí)候的,字段自動(dòng)賦值規(guī)則 @Override public void updateFill(MetaObject metaObject) { this.strictUpdateFill(metaObject, “updateTime”, LocalDateTime.class, LocalDateTime.now()); this.strictUpdateFill(metaObject, “updateBy”, String.class, jwtTokenUtil.getUsernameFromToken()); }}

    • 在數(shù)據(jù)新增的時(shí)候,自動(dòng)為createTime、updateTime、createBy、updateBy賦值,即數(shù)據(jù)初始化。
    • 在數(shù)據(jù)修改的時(shí)候,自動(dòng)為updateTime、updateBy賦值。
    • JwtTokenUtil是我寫的一個(gè)工具類,從當(dāng)前的登錄用戶JWT Token中獲取當(dāng)前登錄用戶的用戶名。(你的系統(tǒng)里面獲取當(dāng)前登錄用戶名方法和我的不一樣,但總之可以獲取到)

    五、實(shí)現(xiàn)效果

    比如在進(jìn)行數(shù)據(jù)更新的時(shí)候,下面的這兩行代碼就不需要寫了,由updateFill(MetaObject metaObject)自動(dòng)完成

    //xxxYyyZzz.setUpdateBy(“zimug”); //數(shù)據(jù)記錄更新操作人//xxxYyyZzz.setUpdateTime(new Date()); //數(shù)據(jù)記錄更新操作的時(shí)間xxxYyyZzzMapper.updateById(xxxYyyZzz);

    同理,在數(shù)據(jù)insert操作的時(shí)候,insertFill(MetaObject metaObject)將被自動(dòng)執(zhí)行。

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年6月21日 12:24
    下一篇 2022年6月21日 12:24

    相關(guān)推薦

    • 計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文(計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文七千字)

      今天小編給各位分享計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文的知識(shí),其中也會(huì)對(duì)計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文七千字進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧! 計(jì)算機(jī)網(wǎng)絡(luò)方面的論文3000字…

      2022年11月26日
    • 5+3疫情防控從哪天開始算(遼寧疫情防控最新政策)

      最近有關(guān)國(guó)內(nèi)各地的疫情大家也都有在持續(xù)關(guān)注,目前國(guó)內(nèi)各地疫情隔離時(shí)間也根據(jù)二十條防控措施有了新的調(diào)整。那么,5+3疫情防控從哪天開始算?對(duì)于密接的5+3隔離時(shí)間計(jì)算大家還是比較關(guān)心…

      2022年11月25日
    • 藍(lán)碼怎么變綠碼需要幾天(藍(lán)碼怎么變綠碼需要幾天)

      大家都知道健康碼的顏色有紅碼、綠碼、黃碼,近日湖南健康碼上線“藍(lán)碼”,不少小伙伴發(fā)現(xiàn)自己健康碼變藍(lán)了,都想趕緊恢復(fù)綠碼,那么藍(lán)碼怎么變綠碼需要幾天?下面小編為大家?guī)硭{(lán)碼變綠碼需要…

      2022年11月25日
    • 拼多多百億補(bǔ)貼預(yù)售一般多久發(fā)貨(拼多多百億補(bǔ)貼預(yù)售)

      拼多多里面有很多優(yōu)惠活動(dòng),其中百億補(bǔ)貼活動(dòng)非?;鸨?,一些里面的東西價(jià)格比別的平臺(tái)便宜,質(zhì)量也有保障,還有預(yù)售的活動(dòng),那么拼多多百億補(bǔ)貼預(yù)售一般多久發(fā)貨?下面小編為大家?guī)砥炊喽喟賰|…

      2022年11月25日
    • 北京疫情多久能解除封控(北京疫情還要多久結(jié)束)

      最近一段時(shí)間北京疫情形勢(shì)備受關(guān)注,馬上就要到年底了,不少人想要去北京辦事,。都非常關(guān)注當(dāng)?shù)匾咔橄嚓P(guān)政策,那么 北京疫情多久能解除封控?北京疫情什么時(shí)候恢復(fù)正常生活?下面小編為大家?guī)А?/p>

      2022年11月25日
    • 什么是推廣cpa一篇文章帶你看懂CPA推廣渠道

      CPA渠道 CPA指的是按照指定的行為結(jié)算,可以是搜索,可以是注冊(cè),可以是激活,可以是搜索下載激活,可以是綁卡,實(shí)名認(rèn)證,可以是付費(fèi),可以是瀏覽等等。甲乙雙方可以根據(jù)自己的情況來定…

      2022年11月25日
    • 抖音直播帶貨有哪些方法技巧(抖音直播帶貨有哪些痛點(diǎn))

      如今抖音這個(gè)短視頻的變現(xiàn)能力越來越突顯了,尤其是在平臺(tái)上開通直播,更具有超強(qiáng)的帶貨屬性,已經(jīng)有越來越多的普通人加入到其中了。不過直播帶貨雖然很火,但是也不是每個(gè)人都能做好的,那么在…

      2022年11月24日
    • 淘寶直播開通后帶貨鏈接怎么做(淘寶直播需要開通淘寶店鋪嗎)

      直播帶貨無論是對(duì)于商家來說還是主播收益都是非??捎^的,所以不少平臺(tái)都有直播帶貨功能,一些小伙伴也想加入淘寶直播,那么淘寶直播開通后帶貨鏈接怎么做?下面小編為大家?guī)硖詫氈辈ラ_通后帶…

      2022年11月24日
    • 前三季度,市場(chǎng)規(guī)模超過五萬億元 信息消費(fèi)展現(xiàn)蓬勃生機(jī)

      家居企業(yè)個(gè)性化全屋定制系統(tǒng),備受消費(fèi)者青睞;主打?qū)I(yè)電競(jìng)的新款高性能便攜式計(jì)算機(jī),銷量表現(xiàn)創(chuàng)新高;物流企業(yè)推出數(shù)智化供應(yīng)鏈興農(nóng)服務(wù)項(xiàng)目,助力優(yōu)質(zhì)農(nóng)產(chǎn)品出深山…… 不久前,工信部發(fā)布…

      2022年11月24日
    • 明查|美國(guó)新冠后遺癥患者中有16%癥狀嚴(yán)重以致無法工作?

      點(diǎn)擊進(jìn)入澎湃新聞全球事實(shí)核查平臺(tái) 速覽 – 網(wǎng)傳數(shù)據(jù)比例無權(quán)威信源佐證,該比例有可能是結(jié)合了美國(guó)疾病防控中心和布魯金斯學(xué)會(huì)的數(shù)據(jù)得出,但這兩個(gè)機(jī)構(gòu)的調(diào)研目的和樣本都不同…

      2022年11月24日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息