Mybatis-Plus的使用(三)——註解與配置文件

原文鏈接:橙子&栗子&世界——Mybatis-Plus的使用(三)——註解與配置文件
Mybatis-Plus的有些註解和配置文件是相輔相成的,比如:@TableField的insertStrategy、updateStrategy等屬性,如果沒有單獨設置,則就會跟隨全局配置,具體的常用配置(.yml)在文章的後半部分有寫。

常用註解

對於我來說最常用的註解有三個@TableName、@TableId、@TableField

@TableName

使用在實體類上,是表名的註解,最常用的屬性就是value:

屬性 默認值 描述
value 表名(默認是實體類名對應的表名(駝峯轉下劃線),若表名與實體類名不能對應,則需要指定表名)

其他屬性:摘自官網@TableName

屬性 默認值 描述
schema “” schema
keepGlobalPrefix false 是否保持使用全局的 tablePrefix 的值(如果設置了全局 tablePrefix 且自行設置了 value 的值)
resultMap “” xml 中 resultMap 的 id
autoResultMap false 是否自動構建 resultMap 並使用(如果設置 resultMap 則不會進行 resultMap 的自動構建並注入)

@TableId

主鍵註解,用在對應的表的主鍵字段上

屬性 默認值 描述
value “” 主鍵字段名(默認是和屬性對應的字段(駝峯轉下劃線),若字段名與屬性名不能對應,則需要指定字段)
type IdType.NONE 主鍵類型

兩個屬性都是比較常用的屬性,特別的,type有個枚舉值:摘自官網@TableId

描述
AUTO 數據庫自增(依賴數據庫)
INPUT 自行輸入
ID_WORKER 分佈式全局唯一ID(基於sequence) 長整型類型
UUID 32位UUID字符串
NONE 無狀態
ID_WORKER_STR 分佈式全局唯一ID(基於sequence) 字符串類型

@TableField

除主鍵外其他字段的註解,常用屬性

屬性 默認值 描述
value “” 字段名(默認是和屬性對應的字段(駝峯轉下劃線),若字段名與屬性名不能對應,則需要指定字段)
exist true 是否爲數據庫表字段(若不需要與數據庫的字段對應,則必須設置爲false)

其他屬性:摘自官網@TableField

屬性 描述
el 映射爲原生 #{ … } 邏輯,相當於寫在 xml 裏的 #{ … } 部分
condition 是否爲數據庫表字段(若不需要與數據庫的字段對應,則必須設置爲false)
update 字段 update set 部分注入, 例如:update="%s+1":表示更新時會set version=version+1(該屬性優先級高於 el 屬性)
insertStrategy 插入策略…
updateStrategy 更新策略…
whereStrategy 條件策略…
fill 字段自動填充策略
select 是否進行 select 查詢
keepGlobalFormat 是否保持使用全局的 format 進行處理

對於以上的插入、更新等策略都可以從官網上找到描述,這裏就不繼續了,以免顯得有些亂。

其他註解

@Version

樂觀鎖註解、標記 @Verison 在字段上

@EnumValue

通枚舉類註解(註解在枚舉字段上)

@TableLogic

表字段邏輯處理註解(邏輯刪除)

@SqlParser

租戶註解

@KeySequence

序列主鍵策略

想要了解更詳細的,可以移步官網查看其他註解

配置文件

這裏主要介紹的是springboot的.yml配置文件的方式,這部分的配置主體結構大概如下:

mybatis-plus:
  ......
  configuration:
    ......
  global-config:
    ......
    db-config:
      ......  

那我們也把分爲4個部分來介紹

mybatis-plus:
  # MyBatis Mapper 所對應的 XML 文件位置,如果您在 Mapper 中有自定義方法(XML 中有自定義實現),需要進行該配置,告訴 Mapper 所對應的 XML 文件位置
  config-location: classpath:mybatis-config.xml
  # 指定外部化 MyBatis Properties 配置,通過該配置可以抽離配置,實現不同環境的配置部署
  configuration-properties: classpath:mybatis-config.properties
  # Mapper對應的xml文件掃描,多個目錄用逗號或者分號分隔
  mapper-locations: classpath*:/mapper/**/*Mapper.xml
  # MyBaits 別名包掃描路徑,通過該屬性可以給包中的類註冊別名,註冊後在 Mapper 對應的 XML 文件中可以直接使用類名,而不用使用全限定的類名(即 XML 中調用的時候不用包含包名)
  type-aliases-package: com.ck.**
  # 該配置請和 typeAliasesPackage 一起使用,如果配置了該屬性,則僅僅會掃描路徑下以該類作爲父類的域對象
  type-aliases-super-type: java.lang.Object
  # 枚舉類 掃描路徑,如果配置了該屬性,會將路徑下的枚舉類進行注入,讓實體類字段能夠簡單快捷的使用枚舉屬性
  type-enums-package: com.baomidou.mybatisplus.samples.quickstart.enums
  # 啓動時是否檢查 MyBatis XML 文件的存在,默認不檢查
  check-config-location: true
  # SIMPLE:該執行器類型不做特殊的事情,爲每個語句的執行創建一個新的預處理語句,REUSE:該執行器類型會複用預處理語句,BATCH:該執行器類型會批量執行所有的更新語句
  default-executor-type: REUSE

其中常用的配置有mapper-locations、type-aliases-package

  configuration:
    # 配置返回數據庫(column下劃線命名&&返回java實體是駝峯命名),自動匹配無需as(沒開啓這個,SQL需要寫as: select user_id as userId)
    map-underscore-to-camel-case: true
    # 全局地開啓或關閉配置文件中的所有映射器已經配置的任何緩存,默認爲 true
    cache-enabled: false
    # 懶加載
    aggressive-lazy-loading: true
    # NONE:不啓用自動映射 PARTIAL:只對非嵌套的 resultMap 進行自動映射 FULL:對所有的 resultMap 都進行自動映射
    auto-mapping-behavior: partial
    # NONE:不做任何處理 (默認值)WARNING:以日誌的形式打印相關警告信息 FAILING:當作映射失敗處理,並拋出異常和詳細信息
    auto-mapping-unknown-column-behavior: none
    # 如果查詢結果中包含空值的列,則 MyBatis 在映射的時候,不會映射這個字段
    call-setters-on-nulls: true
    # 配置JdbcTypeForNull, oracle數據庫必須配置
    jdbc-type-for-null: "null"
    # 這個配置會將執行的sql打印出來,在開發或測試的時候可以用
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

常用的配置有map-underscore-to-camel-case、cache-enabled、jdbc-type-for-null、log-impl,

  global-config:
    # 是否控制檯 print mybatis-plus 的 LOGO
    banner: true
    # 機器 ID 部分(影響雪花ID)
#    worker-id:
    # 數據標識 ID 部分(影響雪花ID)(workerId 和 datacenterId 一起配置才能重新初始化 Sequence)
#    datacenter-id:

這部分配置沒有寫完,但也是不常用的,但可以從官方瞭解詳情

    db-config:
      #表名下劃線命名默認true
      table-underline: true
      #id類型
      id-type: auto
      #是否開啓大寫命名,默認不開啓
      #capital-mode: false
      #邏輯已刪除值,(邏輯刪除下有效) 需要注入邏輯策略LogicSqlInjector 以@Bean方式注入
      logic-not-delete-value: 0
      #邏輯未刪除值,(邏輯刪除下有效)
      logic-delete-value: 1
      #數據庫類型 這個屬性沒什麼用 數據庫類型,默認值爲未知的數據庫類型 如果值爲OTHER,啓動時會根據數據庫連接 url 獲取數據庫類型;如果不是OTHER則不會自動獲取數據庫類型
      db-type: mysql
      # IGNORED	忽略判斷 NOT_NULL 非NULL判斷  NOT_EMPTY 非空判斷(只對字符串類型字段,其他類型字段依然爲非NULL判斷)  DEFAULT	追隨全局配置 類似的還有update-strategy、select-strategy等
      insert-strategy: not_null

這部分常用的配置有id-type等,db-config詳情

以上內容來源於

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章