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