亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mybatis-plus中的常用注解

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

一.前言

1.mybatis-plus簡介

MyBatis-Plus(簡稱 MP)是一個(gè)基于 MyBatis 的增強(qiáng)工具,它對 Mybatis 的基礎(chǔ)功能進(jìn)行了增強(qiáng),但未做任何改變。

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

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

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

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

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

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 進(jìn)行映射。

多用于項(xiàng)目中entity包下 實(shí)體類中

@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.六種類型之一)

將該屬性對應(yīng)的字段指定為主鍵

屬性類型默認(rèn)值描述
valuestring""主鍵字段名
typeEnumIdType.NONE主鍵類型

類型:

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

3.@TableField注解

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

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

3、表示自動(dòng)填充字段一般用于字段名

屬性類型必須指定默認(rèn)值描述
valueString""數(shù)據(jù)庫字段名
existbooleantrue是否為數(shù)據(jù)庫表字段
conditionString""字段 where 實(shí)體查詢比較條件,有值設(shè)置則按設(shè)置的值為準(zhǔn),沒有則為默認(rèn)全局的 %s=#{%s},參考(opens new window)
updateString""字段 update set 部分注入,例如:當(dāng)在version字段上注解update="%s+1" 表示更新時(shí)會(huì) 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字段自動(dòng)填充策略
selectbooleantrue是否進(jìn)行 select 查詢
keepGlobalFormatbooleanfalse是否保持使用全局的 format 進(jìn)行處理
jdbcTypeJdbcTypeJdbcType.UNDEFINEDJDBC 類型 (該默認(rèn)值不代表會(huì)按照該值生效)
typeHandlerClass<? extends TypeHandler>UnknownTypeHandler.class類型處理器 (該默認(rèn)值不代表會(huì)按照該值生效)
numericScaleString""        指定小數(shù)點(diǎn)后保留的位數(shù)

4.@TableLogic注解

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

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

執(zhí)行是效果:      

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

@TableLogic注解參數(shù):     

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

5.@EnumValue注解

注:mp框架對枚舉進(jìn)行處理的一個(gè)注解

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

代碼展示

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

三.項(xiàng)目中用到其他的注解 

1.@JsonFormat注解

Jackson依賴

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

注: 是Jackson提供注解

導(dǎo)包: 

import com.fasterxml.jackson.annotation.JsonFormat;

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

格式:

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

屬性:

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

2.@JsonIgnore注解

注: 是Jackson提供注解

導(dǎo)包:

import com.fasterxml.jackson.annotation.JsonIgnore;

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

3.@JsonTypeId注解

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

總結(jié)

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

相關(guān)文章

最新評論