首页 > 其他分享 >MyBatis-Plus(二、常用注解)

MyBatis-Plus(二、常用注解)

时间:2022-08-15 21:25:23浏览次数:44  
标签:code mybatisplus 数据库 private Plus import MyBatis 注解 com

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;
}

当数据库表名与实体类名不一致,报错如下:

2、@TableId

@TableId

设置主键映射

1)value

  • value 映射主键字段名

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 进行赋值。

例如:

编写测试类

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

Id成功按策略插入成功

3、@TableField

@TableField

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

例如:

当字段名与数据库字段名不一致时,报错如下:

正确写法:

1)exist

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

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

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

2)select

  • select 表示是否查询该字段

3)fill

  • fill 表示是否自动填充,如create_time、update_time
1、增加字段

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

4、@Version

@Version

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

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

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

3、@EnumValue

@EnumValue

1)枚举类注解实现

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

1、设计表

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

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字段

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

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

image-20220814150108889

标签:code,mybatisplus,数据库,private,Plus,import,MyBatis,注解,com
From: https://www.cnblogs.com/xmpy/p/16589658.html

相关文章

  • C-Primer-Plus-第一章-初识C语言
    第一章初识C语言参考书籍:CPrimerPlus(第6版)中文版一、前言打算跟着本书系统地学习一遍C语言,谨以此系列文章记录自己的学习之路。二、主要内容1.C语言起源1972年......
  • mybatis_6_解决mapper文件路径问题
    解决mapper文件路径问题在pom.xml文件中配置resource<build><resources><resource><directory>src/main/java</directory>......
  • SpringBoot之RestController注解
    @RestController=@Controller+@RequestBody概念@RestController用过SpringMVC的人都知道,这个注解是加在类上面的,作用域是整个类,加上之后,这个类里面所有的接口......
  • mybatis_8_在pom.xml中添加lombok
    在pom.xml中添加lomboklombok通过简单的注解形式消除定义JavaBean时所需要生成的一系列属性方法:https://projectlombok.org/setup/maven示例:<dependency><groupId>......
  • mybatis_9_创建JavaBean文件
    创建JavaBean文件packagetk.mybatis.simple.mapper;importlombok.Data;@DatapublicclassIndicator{privateStringindicatorName;}文件结构: ......
  • 设置SQL*Plus运行环境
    set命令基本语法在Oracle11g数据库中,用户可以使用set命令来设置SQL*Plus的运行环境;setsystem_variablevalue;system_variable:变量名;value:变量值;通过set命令设置......
  • 关于Mybatis中if标签未生效问题
    今日索引今天需要更改以前写的功能,增加字段来当控制器判断是执行方案一还是方案二在前端增加传值时,纠结了是传Boolean还是整形还是字符串类型因为是复选框类型,所以默认......
  • mybatis_05_创建mapper.xml
    创建mapper.xml示例IndicatorMapper.xml:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""h......
  • mybatis_3_使用xml构建SqlSeesionFactory
    使用xml构建SqlSeesionFactory,分为两步:第一步:创建一个XML配置文件;第二步:创建SqlSessionFactory实例;示例:第一步:创建mybatis-config2.xml文件<?xmlversion="1.0"enco......
  • 获取注解信息
    点击查看代码packagecom.kuang.reflection;//练习反射操作注解importjava.lang.annotation.*;importjava.lang.reflect.Field;publicclassTest12{pub......