MybatisPlus常用注解

常用注解

@TableName

映射数据库表名

package com.hyn.mybatisplus.entity;

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

import java.util.Date;

@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "user")
public class User  {
    private Integer id;
    private String name;
    private Integer age;
}

@TableField

映射非主键字段,value用来映射字段名,exit表示是否为数据库字段,数据库中没有对应的字段,则可以使用exist

@TableField(value = "name" )
private String name;
  • select表示是否查询该字段

  • fill表示自动填充,将对象存入 数据库的时候,由mybatis自动给字段赋值,create_time,update_time

    1. 添加字段

      image-20210828095644796

    2. 添加成员变量

      package com.hyn.mybatisplus.entity;
      
      import com.baomidou.mybatisplus.annotation.*;
      import lombok.AllArgsConstructor;
      import lombok.Data;
      import lombok.NoArgsConstructor;
      
      import java.util.Date;
      
      @Data
      @AllArgsConstructor
      @NoArgsConstructor
      @TableName(value = "user")
      public class User  {
          @TableId(type = IdType.ASSIGN_ID)
          private Long id;
          @TableField(value = "name")
          private String name;
          private Integer age;
          @TableField(exist = false)
          private String gender;
          @TableField(fill = FieldFill.INSERT)
          private Date createTime;
          @TableField(fill = FieldFill.INSERT_UPDATE)
          private Date updateTime;
      }
      
    3. 创建自动填充 处理器

      package com.hyn.mybatisplus.handler;
      
      import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
      import org.apache.ibatis.reflection.MetaObject;
      import org.springframework.stereotype.Component;
      
      import java.util.Date;
      @Component
      public class MyMetaObjectHandler implements MetaObjectHandler {
          @Override
          public void insertFill(MetaObject metaObject) {
              this.setFieldValByName("createTime",new Date(),metaObject);
              this.setFieldValByName("updateTime",new Date(),metaObject);
          }
      
          @Override
          public void updateFill(MetaObject metaObject) {
              this.setFieldValByName("updateTime",new Date(),metaObject);
          }
      }
      
    4. 结果

      image-20210828102003193

      image-20210828102033067

    5. 测试

      @Test
      void save(){
        User user = new User();
        user.setName("c罗");
        user.setAge(67);
        mapper.insert(user);
      }
      @Test
      void update(){
          User user = mapper.selectById(9);
          user.setName("邓肯");
          mapper.updateById(user);
      }
      

@TableId

设置逐渐映射,value映射主键字段名,type设置主键类型,主键生成策略。

描述
AUTO数据库自增
NONE雪花算法实现
INPUT需要开发者手动赋值
ASSIGN_IDMP分配ID、Long、Integer、String
ASSIGN_UUID分配UUID,String

INPUT如果开发者没有手动赋值,则数据库通过自增的方式给主键赋值。

ASSIGN_ID MP自动赋值,也是雪花算法

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

@Version

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

version =1

线程1: update … set version = 2 where version =1

线程2: update … set version = 2 where version =1

保证了多线程的时候只能修改一次数据

  1. 给数据库添加version字段,默认值为1

    image-20210828105848765

  2. 给实体类添加version成员变量,并添加@Version

    @Version
    private Integer version;
    
    1. 配置类

      package com.hyn.mybatisplus.config;
      
      import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      
      @Configuration
      public class MybatisPlusConfig {
          @Bean
          public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor (){
               return new OptimisticLockerInnerInterceptor();
          }
      }
      

@EnumValue

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

Enum

package com.hyn.mybatisplus.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;

public enum StatusEnum{
    WORK(1,"上班"),
    REST(0,"休息") ;
    @EnumValue
    private Integer code;
   private String msg;

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

实体类

private StatusEnum status;

Application.yml

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  type-enums-package: com.hyn.mybatisplus.enums

查询截图

image-20210829090518702

实现接口方式

package com.hyn.mybatisplus.enums;

import com.baomidou.mybatisplus.annotation.IEnum;

public enum AgeEnum implements IEnum<Integer> {
    ONE(1,"一岁"),
    TWO(2,"两岁"),
    THREE(3,"三岁")
    ;
    private Integer code;
    private String msg;



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

    @Override
    public Integer getValue() {
        return code;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值