MyBatis-Plus(二、常用注解)

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

作者:大三的土狗

专栏:MyBatis-Plus

MyBatis-Plus(二、常用注解)

目录

  • 前言
    • 1、@TableName
    • 2、@TableId
        • 1)value
        • 2)type
    • 3、@TableField
        • 1)exist
        • 2)select
        • 3)fill
    • 4、@Version
    • 5、@EnumValue
        • 1)枚举类注解实现
        • 2)接口实现
    • 6、@TableLogic
    • 7、@SqlParser
    • 8、@InterceptorIgnore
    • 9、@OrderBy(opens new window)
  • 总结

前言


  现如今注解开发变得非常方便,代码简洁,开发速度大大提高,成为开发的潮流,当然MyBatis-Plus提供了也很多注解,来简化我们的开发,提高我们的开发效率,本文将介绍mybatis-plus常见的注解及使用方法。


1、@TableName

@TableName
描述:表名注解,标识实体类对应的表
使用位置:实体类

用法:映射数据库的表名,如果数据库表名与实体类名不一致,用@TableName来映射。

package com.example.mybatisplus.entiy;

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@Data
@TableName("mp")        //表名
public class User {
    private String id;
    private String name;
    private String age;
}

MyBatis-Plus(二、常用注解)

当数据库表名与实体类名不一致,报错如下:
MyBatis-Plus(二、常用注解)

2、@TableId

@TableId
描述:主键注解
使用位置:实体类主键字段

设置主键映射

1)value

  • value 映射主键字段名

MyBatis-Plus(二、常用注解)

2)type

  • type 设置主键类型,主键的生成策略
AUTO(0),
NONE(1),
INPUT(2),
ASSIGN_ID(3),
ASSIGN_UUID(4),

/** @deprecated */
@Deprecated				#已不推荐
ID_WORKER(3),
/** @deprecated */
@Deprecated				#已不推荐
ID_WORKER_STR(3),
/** @deprecated */
@Deprecated				#已不推荐
UUID(4);
描述
AUTO 数据库自增
NONE MP set 主键,雪花算法实现
INPUT 需要开发者手动赋值
ASSIGN_ID MP 分配 ID,Long、Integer、String
ASSIGN_UUID 分配 UUID,Strinig
  • INPUT 如果开发者没有手动赋值,则数据库通过自增的方式给主键赋值,如果开发者手动赋值,则存入该值。

  • AUTO 默认就是数据库自增,开发者无需赋值。

  • ASSIGN_ID MP 自动赋值,雪花算法。

  • ASSIGN_UUID 主键的数据类型必须是 String ,自动生成 UUID 进行赋值。

例如:

MyBatis-Plus(二、常用注解)

编写测试类

	@Test
    void save(){
        User user = new User();
        user.setName("张三");
        user.setAge(20);
        userMapper.insert(user);
    }

Id成功按策略插入成功

MyBatis-Plus(二、常用注解)

3、@TableField

@TableField
描述:字段注解(非主键)

映射非主键字段,value 映射字段名

例如:

当字段名与数据库字段名不一致时,报错如下:
MyBatis-Plus(二、常用注解)

正确写法:
MyBatis-Plus(二、常用注解)

1)exist

  • exist 表示是否为数据库字段 false,如果实体类中的成员变量在数据库中没有对应的字段,则可以使用 exist,VO、DTO

当添加数据库没有的字段时,报错如下:

MyBatis-Plus(二、常用注解)

加上@TableField(exist = false),表示在数据库中没有对应的字段,即可查询成功。

MyBatis-Plus(二、常用注解)

2)select

  • select 表示是否查询该字段
    MyBatis-Plus(二、常用注解)

3)fill

  • fill 表示是否自动填充,如create_time、update_time

1、增加字段

MyBatis-Plus(二、常用注解)

2、扩充实体类

	@TableField(fill = FieldFill.INSERT)        //填充字段
    private Date createTime;

    @TableField(fill = FieldFill.INSERT_UPDATE)         //填充字段
    private Date updateTime;

3、MetaObjectHandler

创建MyMetaObjectHandler类 implements MetaObjectHandler,重写两个方法。

package com.example.mybatisplus.handle;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime", System.currentTimeMillis(), metaObject);   // 创建时间 或者new Date()
        this.setFieldValByName("updateTime", System.currentTimeMillis(), metaObject);   // 更新时间
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime", System.currentTimeMillis(), metaObject);   // 更新时间
    }
}

4、Test

MyBatis-Plus(二、常用注解)

4、@Version

@Version
描述:乐观锁注解、标记 @Verison 在字段上

标记乐观锁,通过 version 字段来保证数据的安全性,当修改数据的时候,会以 version 作为条件,当条件成立的时候才会修改成功。

1、数据库表添加 version 字段,默认值为 1

MyBatis-Plus(二、常用注解)

2、实体类添加 version 成员变量,并且添加 @Version

  
    @Version
    private Integer version;                //乐观锁

3、配置类

package com.example.mybatisplus.config;

import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration      // 声明为配置类
public class MyConfig {

    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor(){
        return new OptimisticLockerInterceptor();                       // 创建一个 OptimisticLockerInterceptor 对象
    }

}

测试:version 1–>2
MyBatis-Plus(二、常用注解)

5、@EnumValue

@EnumValue
描述:普通枚举类注解(注解在枚举字段上)

1)枚举类注解实现

通用枚举类注解,将数据库字段映射成实体类的枚举类型成员变量

1、设计表
MyBatis-Plus(二、常用注解)

2、实体类添加字段

private StatusEnum status;              //状态    枚举类型

3、创建枚举类

package com.example.mybatisplus.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;

public enum StatusEnum {        //枚举类   enum类型的类

    //奖励1  惩罚0
    reward(1,"奖励"),punishment(0,"惩罚");

    @EnumValue
    private Integer code;
    private String msg;

    StatusEnum(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }
}

4、application.yml

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl     # 日志实现类  -->打印sql

  type-enums-package:
    com.example.mybatisplus.enums        # 实现类所在的包		这里

5、测试

查询id为1、2,其对应status分别为1、0

MyBatis-Plus(二、常用注解)

2)接口实现

import com.baomidou.mybatisplus.core.enums.IEnum;

public enum SexEnum implements IEnum<Integer> {
    
    ONE(1,"男"),
    TWO(0,"女"),

    private Integer code;
    private String msg;

    AgeEnum(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    @Override
    public Integer getValue() {
        return this.code;
    }
}

6、@TableLogic

@TableLogic
描述:表字段逻辑处理注解(逻辑删除)

映射逻辑删除

1、数据表添加 identification字段

MyBatis-Plus(二、常用注解)

2、实体类添加注解

	@TableLogic
    private Integer identification;         //是否删除标识

3、application.yml 添加配置

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl     # 日志实现类  -->打印sql

  type-enums-package:
    com.example.mybatisplus.enums        # 实现类所在的包
  global-config:
    db-config:
      logic-not-delete-value: 0     # 逻辑删除的值
      logic-delete-value: 1         # 逻辑删除的值

4、测试

删除id为2的User,identification标识 0–>1

MyBatis-Plus(二、常用注解)

再次查询数据库,查不到id为2的User,逻辑删除实现。

MyBatis-Plus(二、常用注解)

7、@SqlParser

描述:序列主键策略 oracle
属性:value、resultMap

8、@InterceptorIgnore

see 插件主体

9、@OrderBy(opens new window)

描述:内置 SQL 默认指定排序,优先级低于 wrapper 条件查询
属性 类型 必须指定 默认值 描述


总结

   以上就是MyBatis-Plus的常用注解,其中1-6最为常见,使用频率较高,很符合开发某些场景,注解开发可以大大节省我们的时间,简化不必要的开发,因此学好注解开发是大势所趋。

版权声明:程序员胖胖胖虎阿 发表于 2022年10月9日 上午3:48。
转载请注明:MyBatis-Plus(二、常用注解) | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...