MyBatis-Plus 快速入門-注解

2022-03-23 16:02 更新

本文將介紹 MybatisPlus 注解包相關類詳解

@TableName

  • 描述:表名注解,標識實體類對應的表
  • 使用位置:實體類
@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 個地方:

  1. 定義在 ?resultMap ?里,作用于查詢結果的封裝
  2. 定義在 ?insert ?和 ?update ?語句的 ?#{property}? 中的 ?property ?后面(例:?#{property,typehandler=xxx.xxx.xxx}?),并且只作用于當前 設置值

除了以上兩種直接指定 ?typeHandler ?的形式,MyBatis 有一個全局掃描自定義 ?typeHandler ?包的配置,原理是根據(jù)您的 ?property ?類型去找其對應的 ?typeHandler ?并使用。

@TableId

  • 描述:主鍵注解
  • 使用位置:實體類主鍵字段
@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  指定主鍵類型

IdType

 值 描述 
?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?)

@TableField

描述:字段注解(非主鍵)

@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 加載到即可,不需要使用注解

FieldStrategy

 值 描述 
IGNORED? 忽略判斷
?NOT_NULL? 非 NULL 判斷
?NOT_EMPTY? 非空判斷(只對字符串類型字段,其他類型字段依然為非 NULL 判斷)
?DEFAULT?
追隨全局配置

FieldFill

 值  描述
?DEFAULT? 默認不處理
?INSERT?
插入時填充字段
?UPDATE?
更新時填充字段
?INSERT_UPDATE?
插入和更新時填充字段

@Version

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

@EnumValue

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

@TableLogic

  • 描述:表字段邏輯處理注解(邏輯刪除)
 屬性 類型  必須指定  默認值  描述 
?value?  String  否  ""  邏輯未刪除值
?delval?  String  否  ""  邏輯刪除值

@KeySequence

  • 描述:序列主鍵策略 ?oracle ?
  • 屬性:?value?、?resultMap?
 屬性 類型  必須指定  默認值  描述 
?value? String  否  ""  序列名 
?clazz? Class  否  Long.class   id 的類型, 可以指定 String.class,這樣返回的 Sequence 值是字符串"1"

@OrderBy

  • 描述:內(nèi)置 SQL 默認指定排序,優(yōu)先級低于 wrapper 條件查詢

 屬性 類型  必須指定  默認值  描述 
 isDesc  boolean  否  true  是否倒序查詢
 sort short   否  Short.MAX_VALUE  數(shù)字越小越靠前


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號