欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mybatis-plus中的常用注解

 更新時間:2023年07月31日 10:35:45   作者:十年(Sugar)  
這篇文章主要介紹了mybatis-plus中的常用注解,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一.前言

1.mybatis-plus簡介

MyBatis-Plus(簡稱 MP)是一個基于 MyBatis 的增強工具,它對 Mybatis 的基礎功能進行了增強,但未做任何改變。

使得我們可以可以在 Mybatis 開發(fā)的項目上直接進行升級為 Mybatis-plus,正如它對自己的定位,它能夠幫助我們進一步簡化開發(fā)過程,提高開發(fā)效率。

Mybatis-Plus 其實可以看作是對 Mybatis 的再一次封裝,升級之后,對于單表的 CRUD 操作,調用 Mybatis-Plus 所提供的 API 就能夠輕松實現(xiàn),此外還提供了各種查詢方式、分頁等行為。

最最重要的,開發(fā)人員還不用去編寫 XML,這就大大降低了開發(fā)難度.

2.mybatis-plus的優(yōu)點

  • 無侵入:只做增強不做改變,引入它不會對現(xiàn)有工程產生影響,如絲般順滑
  • 損耗?。?/strong>啟動即會自動注入基本 CURD,性能基本無損耗,直接面向對象操作,BaseMapper
  • 強大的 CRUD 操作:內置通用 Mapper、通用 Service,僅僅通過少量配置即可實現(xiàn)單表大部分 CRUD 操作,更有強大的條件構造器,滿足各類使用需求,簡單的CRUD操作不用自己編寫。
  • 支持 Lambda 形式調用:通過 Lambda 表達式,方便的編寫各類查詢條件,無需再擔心字段寫錯
  • 支持主鍵自動生成:支持多達 4 種主鍵策略(內含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解決主鍵問題
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式調用,實體類只需繼承 Model 類即可進行強大的 CRUD 操作
  • 支持自定義全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  • 內置代碼生成器:采用代碼或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 層代碼,支持模板引擎,更有超多自定義配置等您來使用(自動生成代碼)
  • 內置分頁插件:基于 MyBatis 物理分頁,開發(fā)者無需關心具體操作,配置好插件之后,寫分頁等同于普通 List 查詢
  • 分頁插件支持多種數(shù)據(jù)庫:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多種數(shù)據(jù)庫
  • 內置性能分析插件:可輸出 SQL 語句以及其執(zhí)行時間,建議開發(fā)測試時啟用該功能,能快速揪出慢查詢
  • 內置全局攔截插件:提供全表 delete 、 update 操作智能分析阻斷,也可自定義攔截規(guī)則,預防誤操作

3.mybatis-plus依賴包

注:我的配置是基于MyBatis-plus 3.3.1的版本

<!--MyBatis-plus starter-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.3.1</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.3.1</version>
</dependency>

 二.mybatis-plus常用注解

1.@Tablename注解

@Tablename注解注解用來將指定的數(shù)據(jù)庫表和 JavaBean 進行映射。

多用于項目中entity包下 實體類中

@Tablename("user")
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

看一下源碼對@Tablename注解的解釋

2.@Tableld注解

注:一般的寫法

寫法:@TableId(value=“數(shù)據(jù)庫主鍵字段”,type = IdType.六種類型之一)

將該屬性對應的字段指定為主鍵

屬性類型默認值描述
valuestring""主鍵字段名
typeEnumIdType.NONE主鍵類型

類型:

描述
Auto數(shù)據(jù)庫自增
Input自行輸入
ID_Worker分布式全局唯一ID 長整型類型
UUID32位UUID字符串
NONE無狀態(tài)
ID_WORKER_STR分布式全局唯一ID 字符串類型

3.@TableField注解

1、主要用來解決實體類的字段名與數(shù)據(jù)庫中的字段名不匹配的問題(數(shù)據(jù)庫user_addr,字段useraddr未駝峰)

2、實體類中的屬性字段在表中不存在的問題

3、表示自動填充字段一般用于字段名

屬性類型必須指定默認值描述
valueString""數(shù)據(jù)庫字段名
existbooleantrue是否為數(shù)據(jù)庫表字段
conditionString""字段 where 實體查詢比較條件,有值設置則按設置的值為準,沒有則為默認全局的 %s=#{%s},參考(opens new window)
updateString""字段 update set 部分注入,例如:當在version字段上注解update="%s+1" 表示更新時會 set version=version+1 (該屬性優(yōu)先級高于 el 屬性)
insertStrategyEnumFieldStrategy.DEFAULT舉例:NOT_NULLinsert into table_a(<if test="columnProperty != null">column</if>) values (<if test="columnProperty != null">#{columnProperty}</if>)
updateStrategyEnumFieldStrategy.DEFAULT舉例:IGNOREDupdate table_a set column=#{columnProperty}
whereStrategyEnumFieldStrategy.DEFAULT舉例:NOT_EMPTYwhere <if test="columnProperty != null and columnProperty!=''">column=#{columnProperty}</if>
fillEnumFieldFill.DEFAULT字段自動填充策略
selectbooleantrue是否進行 select 查詢
keepGlobalFormatbooleanfalse是否保持使用全局的 format 進行處理
jdbcTypeJdbcTypeJdbcType.UNDEFINEDJDBC 類型 (該默認值不代表會按照該值生效)
typeHandlerClass<? extends TypeHandler>UnknownTypeHandler.class類型處理器 (該默認值不代表會按照該值生效)
numericScaleString""        指定小數(shù)點后保留的位數(shù)

4.@TableLogic注解

邏輯刪除注解: 一般用于項目中的邏輯刪除字段上添加該注解

效果:在字段上加上這個注解再執(zhí)行BaseMapper的刪除方法時,刪除方法會變成修改

執(zhí)行是效果:      

  • 加@TableLogic的情況下    
  • sql:UPDATE 表名 SET deleted=2 WHERE id=? AND deleted=0        
  • 不加@TableLogic的情況下      
  • 走 delete from 表名 where id=值

@TableLogic注解參數(shù):     

  • value = "" 默認的原值    
  • delval = "" 刪除后的值    
  • @TableLogic(value="原值",delval="改值")

5.@EnumValue注解

注:mp框架對枚舉進行處理的一個注解

使用場景:創(chuàng)建枚舉類,在需要存儲數(shù)據(jù)庫的屬性上添加@EnumValue注解

代碼展示

public enum SexEnum {
 MAN(1, "男"),
 WOMAN(2, "女");
 @EnumValue
 private Integer key;
}

三.項目中用到其他的注解 

1.@JsonFormat注解

Jackson依賴

  <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.11.2</version>
  </dependency>

注: 是Jackson提供注解

導包: 

import com.fasterxml.jackson.annotation.JsonFormat;

作用:日期格式化注解,方便前段解析,通常日期格式都是以時間戳的形式存放在數(shù)據(jù)庫里,當前端頁面通過接口查詢時,我們會將一個對象的某些屬性查出來返回給頁面。

格式:

@JsonFormat(pattern = “yyyy-MM-dd'T'HH:mm:ss”, locale = “zh”, timezone = “GMT+8”)

屬性:

  • 1.pattern 指定轉化的格式SSSZ(S指的是微秒,Z指時區(qū)),此處的pattern和java.text.SimpleDateFormat中的Time Patterns一致
  • 2.locale主要指語言,如果中文的話,月份輸出是五月,但是英文就是May,尤其是在反序列化的時候特別重要
  • 3.timezone主要解決“8小時”問題

2.@JsonIgnore注解

注: 是Jackson提供注解

導包:

import com.fasterxml.jackson.annotation.JsonIgnore;

作用:在json序列化時將java Bean中的一些屬性忽略掉,標記在屬性或者方法上,返回的json數(shù)據(jù)即不包含該屬性。

3.@JsonTypeId注解

作用:屬性注解用來表示屬性值應該作為Type Idfor對象使用,而不是使用類名或外部類型名。

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論