MyBatis-Plus之枚举

99 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第32天,点击查看活动详情

MyBatis-Plus之枚举

文章顺序及整体目录可查看(点我即可)

1.0 MyBatis-Plus之枚举

CREATE TABLE `t_user`  (
  `uid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `user_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名',
  `age` int(11) NULL DEFAULT NULL COMMENT '年龄',
  `email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱',
  `is_delect` int(255) NULL DEFAULT 0 COMMENT '是否删除',
  `sex` int(255) NULL DEFAULT NULL COMMENT '性别',
  PRIMARY KEY (`uid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

在这里插入图片描述
添加性别

表中的有些字段值是固定的,例如性别(男或女),此时我们可以使用MyBatis-Plus的通用枚举来实现

创建枚举 类

package com.example.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.Getter;

@Getter
public enum SexEnum {

    MALE(1, "男"),
    FEMALE(2, "女");

    @EnumValue //将注解所标识的属性的值存储到数据库中
    private int sex;
    private String sexName;

    SexEnum(Integer sex, String sexName) {
        this.sex = sex;
        this.sexName = sexName;
    }
}

在这里插入图片描述

package com.example.pojo;

import com.baomidou.mybatisplus.annotation.*;
import com.example.enums.SexEnum;
import lombok.*;

/**
 *
 */
//get/set 有参无参 @Data=get+set@| Setter+@Getter
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {

     //我们使用的是数据库自增
     @TableId(value="uid",type= IdType.AUTO)
     private Long id;

     @TableField("user_name")
     private String name;

     private Integer age;

     private String email;

     @TableLogic
     private int isDelect;

     private SexEnum sexEnum;

}

配置扫描通用枚举

spring:
  # 配置数据源信息
  datasource:
    #配置数据源类型
    type: com.zaxxer.hikari.HikariDataSource
    #配置连接数据的信息
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf-8&userSSL=false
    username: root
    password: root






mybatis-plus:
  configuration:
    #加入mybatis 日志查看执行语句sql语句
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

  global-config:
    db-config:
      table-prefix: t_
      #设置统一的主键生成策略
      id-type: auto
     #配置实体类类型别名对应的包(也就是实体类和mapper.xml的返回的对象对应)
  type-aliases-package: com.example.pojo
  # 扫描通用枚举的包
  type-enums-package: com.example.enums

创建测试类:

package com.example;

import com.example.enums.SexEnum;
import com.example.mapper.UserMapper;
import com.example.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class MyBatisPlusEnumTest {

    @Autowired
    private UserMapper userMapper;


    @Test
    public void test(){
         User user = new User();
        user.setName("admin");
        user.setAge(33);
        user.setSex(SexEnum.MALE);
        int result = userMapper.insert(user);
        System.out.println("result:"+result);

    }


}

在这里插入代码片


==>  Preparing: INSERT INTO t_user ( user_name, age, is_delect, sex ) VALUES ( ?, ?, ?, ? )
==> Parameters: admin(String), 33(Integer), 0(Integer), 1(Integer)
<==    Updates: 1

枚举的学习就到这里结束;大家也会说上班可能用不到;
但是正常规范的代码,例如状态码,数据字典等相关都需要类似接口来实现得到;