簡介
說明
本文介紹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" |