MyBatis-Plus(常用注解)

1您单、@TableName

@TableName

用法:映射數(shù)據(jù)庫的表名,如果數(shù)據(jù)庫表名與實體類名不一致荞雏,用@TableName來映射虐秦。

packagecom.example.mybatisplus.entiy;importcom.baomidou.mybatisplus.annotation.TableName;importlombok.Data;@Data@TableName("mp")//表名publicclassUser{privateString id;privateString name;privateString age;}


當(dāng)數(shù)據(jù)庫表名與實體類名不一致,報錯如下:


2凤优、@TableId

@TableId

設(shè)置主鍵映射

1)value

value 映射主鍵字段名


2)type

type 設(shè)置主鍵類型悦陋,主鍵的生成策略

~~~

AUTO(0),NONE(1),INPUT(2),ASSIGN_ID(3),ASSIGN_UUID(4),/** @deprecated */@Deprecated#已不推薦ID_WORKER(3),/** @deprecated */@Deprecated#已不推薦ID_WORKER_STR(3),/** @deprecated */@Deprecated#已不推薦UUID(4);

~~~

值描述

AUTO數(shù)據(jù)庫自增

NONEMP set 主鍵,雪花算法實現(xiàn)

INPUT需要開發(fā)者手動賦值

ASSIGN_IDMP 分配 ID筑辨,Long俺驶、Integer、String

ASSIGN_UUID分配 UUID棍辕,Strinig

INPUT 如果開發(fā)者沒有手動賦值暮现,則數(shù)據(jù)庫通過自增的方式給主鍵賦值还绘,如果開發(fā)者手動賦值,則存入該值栖袋。

AUTO 默認(rèn)就是數(shù)據(jù)庫自增拍顷,開發(fā)者無需賦值。

ASSIGN_ID MP 自動賦值塘幅,雪花算法昔案。

ASSIGN_UUID 主鍵的數(shù)據(jù)類型必須是 String ,自動生成 UUID 進(jìn)行賦值晌块。

例如:


編寫測試類

~~~

@Test? ? void save(){Useruser= newUser();user.setName("張三");user.setAge(20);? ? ? ? userMapper.insert(user);? ? }

~~~

Id成功按策略插入成功


3爱沟、@TableField

@TableField

映射?非主鍵?字段,value 映射字段名

例如:

當(dāng)字段名與數(shù)據(jù)庫字段名不一致時匆背,報錯如下:


正確寫法:


1)exist

exist 表示是否為數(shù)據(jù)庫字段 false呼伸,如果實體類中的成員變量在數(shù)據(jù)庫中沒有對應(yīng)的字段,則可以使用 exist钝尸,VO括享、DTO

當(dāng)添加數(shù)據(jù)庫沒有的字段時,報錯如下:


加上@TableField(exist = false)珍促,表示在數(shù)據(jù)庫中沒有對應(yīng)的字段铃辖,即可查詢成功。


2)select

select 表示是否查詢該字段


3)fill

fill 表示是否自動填充猪叙,如create_time娇斩、update_time

1、增加字段


2穴翩、擴(kuò)充實體類

~~~

@TableField(fill = FieldFill.INSERT)//填充字段privateDate createTime;@TableField(fill = FieldFill.INSERT_UPDATE)//填充字段privateDate updateTime;

~~~

3犬第、MetaObjectHandler

創(chuàng)建MyMetaObjectHandler類 implements MetaObjectHandler,重寫兩個方法芒帕。

~~~

packagecom.example.mybatisplus.handle;importcom.baomidou.mybatisplus.core.handlers.MetaObjectHandler;importorg.apache.ibatis.reflection.MetaObject;importorg.springframework.stereotype.Component;@ComponentpublicclassMyMetaObjectHandlerimplementsMetaObjectHandler{@OverridepublicvoidinsertFill(MetaObject metaObject){this.setFieldValByName("createTime", System.currentTimeMillis(), metaObject);// 創(chuàng)建時間 或者new Date()this.setFieldValByName("updateTime", System.currentTimeMillis(), metaObject);// 更新時間}@OverridepublicvoidupdateFill(MetaObject metaObject){this.setFieldValByName("updateTime", System.currentTimeMillis(), metaObject);// 更新時間}}

~~~

4、Test


4鉴分、@Version

@Version

標(biāo)記樂觀鎖,通過 version 字段來保證數(shù)據(jù)的安全性,當(dāng)修改數(shù)據(jù)的時候,會以 version 作為條件载慈,當(dāng)條件成立的時候才會修改成功。

1寡具、數(shù)據(jù)庫表添加 version 字段,默認(rèn)值為 1


2、實體類添加 version 成員變量,并且添加 @Version

@Versionprivate Integer version;//樂觀鎖

3、配置類

packagecom.example.mybatisplus.config;importcom.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@Configuration// 聲明為配置類publicclassMyConfig{@BeanpublicOptimisticLockerInterceptor optimisticLockerInterceptor(){returnnew OptimisticLockerInterceptor();// 創(chuàng)建一個 OptimisticLockerInterceptor 對象}}

測試:version 1-->2


3稼钩、@EnumValue

@EnumValue

1)枚舉類注解實現(xiàn)

通用枚舉類注解静秆,將數(shù)據(jù)庫字段?映射成?實體類的枚舉類型成員變量

1、設(shè)計表


2、實體類添加字段

privateStatusEnum status;//狀態(tài)? ? 枚舉類型

3膨蛮、創(chuàng)建枚舉類

packagecom.example.mybatisplus.enums;importcom.baomidou.mybatisplus.annotation.EnumValue;publicenumStatusEnum {//枚舉類? enum類型的類//獎勵1? 懲罰0reward(1,"獎勵"),punishment(0,"懲罰");@EnumValueprivateInteger code;privateString msg;? ? StatusEnum(Integer code, String msg) {this.code = code;this.msg = msg;? ? }}

4、application.yml

mybatis-plus:configuration:log-impl:org.apache.ibatis.logging.stdout.StdOutImpl# 日志實現(xiàn)類-->打印sqltype-enums-package:com.example.mybatisplus.enums# 實現(xiàn)類所在的包這里

5、測試

查詢id為1、2附帽,其對應(yīng)status分別為1颗圣、0


2)接口實現(xiàn)

importcom.baomidou.mybatisplus.core.enums.IEnum;publicenumSexEnum implements IEnum {? ? ? ? ONE(1,"男"),? ? TWO(0,"女"),privateInteger code;privateString msg;? ? AgeEnum(Integer code, String msg) {this.code = code;this.msg = msg;? ? }@OverridepublicInteger getValue() {returnthis.code;? ? }}

6、@TableLogic

@TableLogic

映射邏輯刪除

1、數(shù)據(jù)表添加 identification字段


2斟叼、實體類添加注解

@TableLogicprivate Integer identification;//是否刪除標(biāo)識

3绢淀、application.yml 添加配置

mybatis-plus:? configuration:? ? log-impl:org.apache.ibatis.logging.stdout.StdOutImpl# 日志實現(xiàn)類? -->打印sql? type-enums-package:com.example.mybatisplus.enums# 實現(xiàn)類所在的包? global-config:? ? db-config:? ? ? logic-not-delete-value:0# 邏輯刪除的值? ? ? logic-delete-value:1# 邏輯刪除的值

4硝全、測試

刪除id為2的User,identification標(biāo)識 0-->1


再次查詢數(shù)據(jù)庫,查不到id為2的User,邏輯刪除實現(xiàn)遮精。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市败潦,隨后出現(xiàn)的幾起案子本冲,更是在濱河造成了極大的恐慌,老刑警劉巖变屁,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件眼俊,死亡現(xiàn)場離奇詭異,居然都是意外死亡粟关,警方通過查閱死者的電腦和手機(jī)疮胖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門环戈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人澎灸,你說我怎么就攤上這事院塞。” “怎么了性昭?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵拦止,是天一觀的道長。 經(jīng)常有香客問我糜颠,道長汹族,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任其兴,我火速辦了婚禮顶瞒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘元旬。我一直安慰自己榴徐,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布匀归。 她就那樣靜靜地躺著坑资,像睡著了一般。 火紅的嫁衣襯著肌膚如雪穆端。 梳的紋絲不亂的頭發(fā)上袱贮,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天,我揣著相機(jī)與錄音体啰,去河邊找鬼字柠。 笑死,一個胖子當(dāng)著我的面吹牛狡赐,可吹牛的內(nèi)容都是我干的窑业。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼枕屉,長吁一口氣:“原來是場噩夢啊……” “哼常柄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起搀擂,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤西潘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后哨颂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喷市,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年威恼,在試婚紗的時候發(fā)現(xiàn)自己被綠了品姓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寝并。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖腹备,靈堂內(nèi)的尸體忽然破棺而出衬潦,到底是詐尸還是另有隱情,我是刑警寧澤植酥,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布镀岛,位于F島的核電站,受9級特大地震影響友驮,放射性物質(zhì)發(fā)生泄漏漂羊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一卸留、第九天 我趴在偏房一處隱蔽的房頂上張望拨与。 院中可真熱鬧,春花似錦艾猜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至今缚,卻和暖如春算柳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背姓言。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工瞬项, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人何荚。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓囱淋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親餐塘。 傳聞我的和親對象是個殘疾皇子妥衣,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容