mybatis-plus常用注解

2年前 (2022) 程序员胖胖胖虎阿
270 0 0

目录

一.前言

1.mybatis-plus简介

2.mybatis-plus的优点

3.mybatis-plus依赖包

 二.mybatis-plus常用注解

1、@Tablename注解

2.@Tableld注解

3.@TableField注解

4.@TableLogic注解

5.@EnumValue注解

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

1.@JsonFormat注解

2.@JsonIgnore注解

3.@JsonTypeId注解

一.前言

1.mybatis-plus简介

       MyBatis-Plus(简称 MP)是一个基于 MyBatis 的增强工具,它对 Mybatis 的基础功能进行了增强,但未做任何改变。使得我们可以可以在 Mybatis 开发的项目上直接进行升级为 Mybatis-plus,正如它对自己的定位,它能够帮助我们进一步简化开发过程,提高开发效率。Mybatis-Plus 其实可以看作是对 Mybatis 的再一次封装,升级之后,对于单表的 CRUD 操作,调用 Mybatis-Plus 所提供的 API 就能够轻松实现,此外还提供了各种查询方式、分页等行为。最最重要的,开发人员还不用去编写 XML,这就大大降低了开发难度.

2.mybatis-plus的优点

无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作,BaseMapper
强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求,简单的CRUD操作不用自己编写。
支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用(自动生成代码)
内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

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注解注解用来将指定的数据库表和 JavaBean 进行映射。多用于项目中entity包下 实体类中

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

看一下源码对@Tablename注解的解释

mybatis-plus常用注解

2.@Tableld注解

注:一般的写法

写法:@TableId(value=“数据库主键字段”,type = IdType.六种类型之一)

将该属性对应的字段指定为主键

属性 类型 默认值 描述
value string "" 主键字段名
type Enum IdType.NONE 主键类型

类型:

描述
Auto 数据库自增
Input 自行输入
ID_Worker 分布式全局唯一ID 长整型类型
UUID 32位UUID字符串
NONE 无状态
ID_WORKER_STR 分布式全局唯一ID 字符串类型

3.@TableField注解

1、 主要用来解决实体类的字段名与数据库中的字段名不匹配的问题(数据库user_addr,字段useraddr未驼峰)

2、 实体类中的属性字段在表中不存在的问题

3.表示自动填充字段一般用于字段名

属性 类型 必须指定 默认值 描述
value String "" 数据库字段名
exist boolean true 是否为数据库表字段
condition String "" 字段 where 实体查询比较条件,有值设置则按设置的值为准,没有则为默认全局的 %s=#{%s},参考(opens new window)
update String "" 字段 update set 部分注入,例如:当在version字段上注解update="%s+1" 表示更新时会 set version=version+1 (该属性优先级高于 el 属性)
insertStrategy Enum FieldStrategy.DEFAULT 举例:NOT_NULL
insert into table_a(<if test="columnProperty != null">column</if>) values (<if test="columnProperty != null">#{columnProperty}</if>)
updateStrategy 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 进行处理
jdbcType JdbcType JdbcType.UNDEFINED JDBC 类型 (该默认值不代表会按照该值生效)
typeHandler Class<? extends TypeHandler> UnknownTypeHandler.class 类型处理器 (该默认值不代表会按照该值生效)
numericScale String ""         指定小数点后保留的位数

4.@TableLogic注解

逻辑删除注解: 一般用于项目中的逻辑删除字段上添加该注解

效果:在字段上加上这个注解再执行BaseMapper的删除方法时,删除方法会变成修改

执行是效果:

      加@TableLogic的情况下

      sql:UPDATE 表名 SET deleted=2 WHERE id=? AND deleted=0

        不加@TableLogic的情况下

      走 delete from 表名 where id=值

@TableLogic注解参数: 

    value = "" 默认的原值

    delval = "" 删除后的值

    @TableLogic(value="原值",delval="改值")

5.@EnumValue注解

注:mp框架对枚举进行处理的一个注解

使用场景:创建枚举类,在需要存储数据库的属性上添加@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;

作用:日期格式化注解,方便前段解析,通常日期格式都是以时间戳的形式存放在数据库里,当前端页面通过接口查询时,我们会将一个对象的某些属性查出来返回给页面。

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

属性:

1.pattern 指定转化的格式SSSZ(S指的是微秒,Z指时区),此处的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数据即不包含该属性。

3.@JsonTypeId注解

作用:属性注解用来表示属性值应该作为Type Idfor对象使用,而不是使用类名或外部类型名。

版权声明:程序员胖胖胖虎阿 发表于 2022年10月4日 下午9:00。
转载请注明:mybatis-plus常用注解 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...