天天看點

Mybatis-Plus--注解

簡介

​說明​

        本文介紹MybatisPlus的注解的用法。

​官網​

​​mybatis.plus​​

​​@TableName​​

描述:表名注解

屬性 類型 必須指定 預設值 描述
value String ""

表名。

若不指定,則預設為駝峰轉下劃線。例:類名為UserStudent,則對應表名為user_student。

schema String "" schema
keepGlobalPrefix boolean false 是否保持使用全局的 tablePrefix 的值(如果設定了全局 tablePrefix 且自行設定了 value 的值)
resultMap String "" xml 中 resultMap 的 id
autoResultMap boolean false

        是否自動建構 resultMap 并使用(若設定 resultMap 則不進行 resultMap 的自動建構并注入)。

        mp會自動建構一個ResultMap并注入到mybatis裡(一般用不上)。

        因為mp底層是mybatis,是以一些mybatis的常識你要知道,mp隻是幫你注入了常用crud到mybatis裡 注入之前可以說是動态的(根據你entity的字段以及注解變化而變化),但是注入之後是靜态的(等于你寫在xml的東西) 而對于直接指定typeHandler,mybatis隻支援你寫在2個地方:

1.定義在resultMap裡,隻作用于select查詢的傳回結果封裝

2.定義在insert和updatesql的#{property}裡的property後面(例:#{property,typehandler=xxx.xxx.xxx}),隻作用于設定值 而除了這兩種直接指定typeHandler,mybatis有一個全局的掃描你自己的typeHandler包的配置,這是根據你的property的類型去找typeHandler并使用.

value

若資料庫中所有表都有表名字首,比如想讓 t_user_info 表對應 UserInfo 實體類,可以添加如下全局配置設定表名字首:

mybatis-plus.global-config.db-config.table-prefix=t_      

若所有表名都不是下劃線命名(但能跟類名對應上),比如想讓 userinfo 表對應 UserInfo 實體類,可以添加如下全局配置,表示資料庫表不使用下劃線命名: 

mybatis-plus.global-config.db-config.table-underline=false      

​​@TableId​​

描述:主鍵注解

屬性 類型 必須指定 預設值 描述
value String "" 主鍵字段名
type Enum IdType.NONE 主鍵類型

​​IdType​​

描述
AUTO 自動。需要将ID設為自增,否則會報錯。
NONE 無狀态,該類型為未設定主鍵類型(注解裡等于跟随全局,全局裡約等于 INPUT)
INPUT 可自定義主鍵。若程式設定主鍵,則用程式的;若程式不設,資料庫ID是自增的,則用資料庫的自增ID。
ASSIGN_ID

配置設定ID(主鍵類型為Number(Long和Integer)或String)(since 3.3.0)。

使用接口IdentifierGenerator的方法nextId(預設實作類為DefaultIdentifierGenerator雪花算法)。

若自己指定了id的值,則直接使用id的值,不會自動生成來覆寫。

ASSIGN_UUID

配置設定UUID,主鍵類型為String(since 3.3.0),使用接口IdentifierGenerator的方法nextUUID(預設default方法)。

若自己指定了id的值,則直接使用id的值,不會自動生成來覆寫。

ID_WORKER 分布式全局唯一ID 長整型類型(please use ASSIGN_ID)
UUID 32位UUID字元串(please use ASSIGN_UUID)
ID_WORKER_STR 分布式全局唯一ID 字元串類型(please use ASSIGN_ID)

​​@TableField​​

屬性 類型 必須指定 預設值 描述
value String "" 資料庫字段名
el String "" 映射為原生 #{ ... } 邏輯,相當于寫在 xml 裡的 #{ ... } 部分
exist boolean true 是否為資料庫表字段
condition String "" 字段 where 實體查詢比較條件,有值設定則按設定的值為準,沒有則為預設全局的 %s=#{%s},​​參考​​
update String "" 字段 update set 部分注入, 例如:update="%s+1":表示更新時會set version=version+1(該屬性優先級高于 el 屬性)
insertStrategy Enum N DEFAULT 舉例:@TableField(insertStrategy= FieldStrategy.IGNORED)
updateStrategy Enum N DEFAULT 舉例:@TableField(updateStrategy = FieldStrategy.IGNORED)
whereStrategy Enum N DEFAULT 舉例:@TableField(whereStrategy= FieldStrategy.IGNORED)
fill Enum FieldFill.DEFAULT 字段自動填充政策
select boolean true 是否進行 select 查詢
keepGlobalFormat boolean false 是否保持使用全局的 format 進行處理
jdbcType JdbcType JdbcType.UNDEFINED

        JDBC類型 (該預設值不代表會按照該值生效)。

        若不配合@TableName#autoResultMap = true一起使用,隻生效于 update 的sql。

typeHandler Class<? extends TypeHandler>

UnknownTyp

eHandler.class

        類型處理器 (該預設值不代表會按照該值生效)。

        若不配合@TableName#autoResultMap = true一起使用,隻生效于 update 的sql。

        如果你的字段類型和set進去的類型為equals關系,則隻需要讓你的typeHandler讓Mybatis加載到即可,不需要使用注解。

numericScale String ""

        指定小數點後保留的位數。

        numericScale隻生效于 update 的sql

​​FieldStrategy​​

描述
IGNORED 忽略判斷。即:無論是否是NULL都會寫入。預設:NULL時不寫入
NOT_NULL 非NULL判斷。即:操作前判斷是否是NULL,若是則不操作。
NOT_EMPTY 非空判斷。(隻對字元串類型字段,其他類型字段依然為非NULL判斷)
DEFAULT 追随全局配置。(預設為NOT_NULL)

​​FieldFill​​

描述
DEFAULT 預設不處理
INSERT 插入時填充字段
UPDATE 更新時填充字段
INSERT_UPDATE 插入和更新時填充字段

​​@Version​​

描述:樂觀鎖注解、标記 @Verison 在字段上

​​@EnumValue​​

描述:通枚舉類注解(注解在枚舉字段上)

​​@TableLogic​​

描述:表字段邏輯處理注解(邏輯删除)

屬性 類型 必須指定 預設值 描述
value String "0" 邏輯未删除值。
delval String "1"

邏輯删除值。

也可寫為字段名,如:id,這樣删除時會将id的值寫到邏輯删除字段

​​@SqlParser​​

描述:租戶注解,支援method上以及mapper接口上

屬性 類型 必須指定 預設值 描述
filter boolean false true: 表示過濾SQL解析,即不會進入ISqlParser解析鍊,否則會進解析鍊并追加例如tenant_id等條件

​​@KeySequence​​

描述:序列主鍵政策 oracle

屬性:value、resultMap

屬性 類型 必須指定 預設值 描述
value String "" 序列名
clazz Class Long.class id的類型, 可以指定String.class,這樣傳回的Sequence值是字元串"1"

其他網址