本文將介紹 MybatisPlus 注解包相關(guān)類詳解
@TableName("sys_user")
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
屬性 | 類型 | 必須指定 | 默認(rèn)值 | 描述 |
?values ? |
String | 否 | "" | 表名 |
?schema ? |
String | 否 | "" | schema |
?keepGlobalPrefix ? |
boolean | 否 | false | 是否保持使用全局的 tablePrefix 的值(當(dāng)全局 tablePrefix 生效時(shí)) |
?resultMap ? |
String | 否 | "" | xml 中 resultMap 的 id(用于滿足特定類型的實(shí)體類對(duì)象綁定) |
?autoResultMap ? |
boolean | 否 | false | 是否自動(dòng)構(gòu)建 resultMap 并使用(如果設(shè)置 resultMap 則不會(huì)進(jìn)行 resultMap 的自動(dòng)構(gòu)建與注入) |
?excludeProperty ? |
String[] | 否 | {} | 需要排除的屬性名 |
關(guān)于 ?autoResultMap
? 的說明:
MP 會(huì)自動(dòng)構(gòu)建一個(gè) ??resultMap
?并注入到 ?MyBatis ?里(一般用不上),請(qǐng)注意以下內(nèi)容:
因?yàn)?MP 底層是 MyBatis,所以 MP 只是幫您注入了常用 CRUD 到 MyBatis 里,注入之前是動(dòng)態(tài)的(根據(jù)您的 Entity 字段以及注解變化而變化),但是注入之后是靜態(tài)的(等于 XML 配置中的內(nèi)容)。
而對(duì)于 ?typeHandler
屬性,MyBatis 只支持寫在 2 個(gè)地方:
resultMap
?里,作用于查詢結(jié)果的封裝insert
?和 ?update
?語句的 ?#{property}
? 中的 ?property
?后面(例:?#{property,typehandler=xxx.xxx.xxx}
?),并且只作用于當(dāng)前 設(shè)置值除了以上兩種直接指定 ?typeHandler
?的形式,MyBatis 有一個(gè)全局掃描自定義 ?typeHandler
?包的配置,原理是根據(jù)您的 ?property
?類型去找其對(duì)應(yīng)的 ?typeHandler
?并使用。
@TableName("sys_user")
public class User {
@TableId
private Long id;
private String name;
private Integer age;
private String email;
}
屬性 | 類型 | 必須指定 | 默認(rèn)值 | 描述 |
value | String | 否 | "" | 主鍵字段名 |
type | Enum | 否 | IdType.NONE | 指定主鍵類型 |
值 | 描述 |
?AUTO ? |
數(shù)據(jù)庫 ID 自增 |
?NONE ? |
無狀態(tài),該類型為未設(shè)置主鍵類型(注解里等于跟隨全局,全局里約等于 INPUT) |
?INPUT ? |
insert 前自行 set 主鍵值 |
?ASSIGN_ID ? |
分配 ID(主鍵類型為 Number(Long 和 Integer)或 String)(since 3.3.0),使用接口?IdentifierGenerator ?的方法?nextId ?(默認(rèn)實(shí)現(xiàn)類為?DefaultIdentifierGenerator ?雪花算法) |
?ASSIGN_UUID ? |
分配 UUID,主鍵類型為 String(since 3.3.0),使用接口?IdentifierGenerator ?的方法?nextUUID ?(默認(rèn) default 方法) |
?ID_WORKER ? |
分布式全局唯一 ID 長整型類型(please use ?ASSIGN_ID ?) |
?UUID ? |
32 位 UUID 字符串(please use ?ASSIGN_UUID ?) |
?ID_WORKER_STR ? |
分布式全局唯一 ID 字符串類型(please use ?ASSIGN_ID ?) |
描述:字段注解(非主鍵)
@TableName("sys_user")
public class User {
@TableId
private Long id;
@TableField("nickname")
private String name;
private Integer age;
private String email;
}
屬性 | 類型 | 必須指定 | 默認(rèn)值 | 描述 |
?value ? |
String | 否 | "" | 數(shù)據(jù)庫字段名 |
?exist ? |
boolean | 否 | true | 是否為數(shù)據(jù)庫表字段 |
?ondition ? |
String | 否 | "" | 字段?where ?實(shí)體查詢比較條件,有值設(shè)置則按設(shè)置的值為準(zhǔn),沒有則為默認(rèn)全局的?%s=#{%s} ? |
?update ? |
String | 否 | "" | 字段 ?update set ? 部分注入,例如:當(dāng)在version字段上注解?update="%s+1" ? 表示更新時(shí)會(huì) ?set version=version+1 ? (該屬性優(yōu)先級(jí)高于 ?el ? 屬性) |
?insertStrategy ? |
Enum | 否 | FieldStrategy.DEFAULT | 舉例:NOT_NULL
? insert into table_a(<if test="columnProperty != null">column</if>) values (<if test="columnProperty != null">#{columnProperty}</if>) ? |
?updataStrategy ? |
Enum | 否 | FieldStrategy.DEFAULT | 舉例:IGNORED
? update table_a set column=#{columnProperty} ? |
?whereStrategy ? |
Enum | 否 | FieldStrategy.DEFAULT | 舉例:NOT_EMPTY
? where <if test="columnProperty != null and columnProperty!=''">column=#{columnProperty}</if> ? |
?fill ? |
Enum | 否 | FieldFill.DEFAULT | 字段自動(dòng)填充策略 |
?select ? |
boolean | 否 | true | 是否進(jìn)行select查詢 |
?keepGlobalFormat ? |
boolean | 否 | false | 是否保持使用全局的format進(jìn)行處理 |
?jabcType ? |
jabcType | 否 | JdbcType.UNDEFINED | JDBC類型(該默認(rèn)值不代表會(huì)按照該值生效) |
?typeHandler ? |
Class<?extends TypeHandler> | 否 | UnknownTypeHandler.class | 類型處理器(該默認(rèn)值不代表會(huì)按照該值生效) |
?numericScale ? |
String | 否 | "" | 指定小數(shù)點(diǎn)后保留的位數(shù) |
關(guān)于?jdbcType
?和?typeHandler
?以及?numericScale
?的說明:
?numericScale
?只生效于 update 的 sql. ?jdbcType
?和?typeHandler
?如果不配合?@TableName#autoResultMap = true
?一起使用,也只生效于 update 的 sql. 對(duì)于?typeHandler
?如果你的字段類型和 set 進(jìn)去的類型為?equals
?關(guān)系,則只需要讓你的?typeHandler
?讓
Mybatis 加載到即可,不需要使用注解
值 | 描述 |
IGNORED ? |
忽略判斷 |
?NOT_NULL ? |
非 NULL 判斷
|
?NOT_EMPTY ? |
非空判斷(只對(duì)字符串類型字段,其他類型字段依然為非 NULL 判斷)
|
?DEFAULT ?
|
追隨全局配置
|
值 | 描述 |
?DEFAULT ? |
默認(rèn)不處理 |
?INSERT ?
|
插入時(shí)填充字段 |
?UPDATE ?
|
更新時(shí)填充字段 |
?INSERT_UPDATE ?
|
插入和更新時(shí)填充字段 |
@Verison
? 在字段上屬性 | 類型 | 必須指定 | 默認(rèn)值 | 描述 |
?value ? |
String | 否 | "" | 邏輯未刪除值 |
?delval ? |
String | 否 | "" | 邏輯刪除值 |
oracle
?value
?、?resultMap
?屬性 | 類型 | 必須指定 | 默認(rèn)值 | 描述 |
?value ? |
String | 否 | "" | 序列名 |
?clazz ? |
Class | 否 | Long.class | id 的類型, 可以指定 String.class,這樣返回的 Sequence 值是字符串"1" |
屬性 | 類型 | 必須指定 | 默認(rèn)值 | 描述 |
isDesc | boolean | 否 | true | 是否倒序查詢 |
sort | short | 否 | Short.MAX_VALUE | 數(shù)字越小越靠前 |
更多建議: