Mybatis-Plus通用枚举 + 达梦数据库

本文基于 Mybatis-Plus 3.5.2 版本进行通用枚举配置演示。介绍了不同版本 Mybatis-Plus 通用枚举配置的差异,3.5.2 版本只需用 @EnumValue 注解枚举属性。还提及达梦数据库版本问题,将版本从 8.1.2.79 改为 8.1.2.141 解决报错。最后展示代码及调用结果。

前言

Mybatis-Plus 不同的版本,通用枚举配置是不一样的,稍早一些的需要实现 IEnum 接口,并且需要在配置文件中配置 typeEnumsPackage 或者编写配置类,详情见 MP官网-通用枚举

而 Mybatis-Plus 从 3.5.2 版本开始只需使用 @EnumValue 注解枚举属性,本文也是基于3.5.2做了一个演示!

技术版本 pom.xml

 <!--  达梦8      -->
 <dependency>
     <groupId>com.dameng</groupId>
     <artifactId>DmJdbcDriver18</artifactId>
     <version>8.1.2.141</version>
 </dependency>

 <!--mybatis-plus-->
 <dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus-boot-starter</artifactId>
     <version>3.5.2</version>
 </dependency>
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
 </dependency>

之前在这里用的达梦版本为8.1.2.79 ,就一直报错 “Error attempting to get column ‘gender’ from result set. Cause: dm.jdbc.driver.DMException: 不支持该数据类型”,后来改为8.1.2.141 就好了

代码展示

1. 枚举类

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;

public enum GenderEnum{
    MAN(0, "男"),
    WOMAN(1, "女");

    @EnumValue   // 1. 标记此值是mybatis枚举类型与数据存储值映射
    private final int value;
    @JsonValue   // 2. 若不配置此注解,查询数据库对应 0-MAN,1-WOMAN,配置后,查询数据库 0-‘男’,1-‘女’
    private final String desc;

    GenderEnum(int value, String desc) {
        this.value = value;
        this.desc = desc;
    }

    @Override  // 3. 重写toString方法
    public String toString() {
        return "GenderEnum{" +
                "value=" + value +
                ", desc='" + desc + '\'' +
                '}';
    }
}

2. entity类

@TableName("SYS_STUDENT")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    @TableId(value = "USER_ID", type = IdType.AUTO)
    private BigInteger userId;

    @TableField("USERNAME")
    private String username;

    @TableField("PASSWORD")
    private String password;

    @TableField("NICKNAME")
    private String nickname;

    @TableField("MOBILE_NUMBER")
    private String mobileNumber;

    @TableField("EMAIL_ADDRESS")
    private String emailAddress;

    @TableField("GENDER") 
    // 1. 数据库类型 为int,这里改成上面定义的枚举类型,如果需要配置 xxMapper.xml,也需要添加该字段信息,字段类型依旧是数字Integer   
    private GenderEnum gender;
}

3. controller

@RestController
@RequestMapping("/student")
public class StudentController {
    @Autowired
    private StudentService studentService;
    @Operation(summary = "getAllStu", description = "获取所有学生信息")
    @RequestMapping(value = "/getAllStu",method = RequestMethod.GET)
    public Response<PageRequest> getAllStu(PageRequest pageRequest){
        Response<PageRequest> response = ResponseGenerator.genSuccessResponse(pageRequest);
        List<Student> list = studentService.list();
        response.setData(list);
        return response;
    }

    @Operation(summary = "save", description = "添加学生信息")
    @RequestMapping(value = "/save",method = RequestMethod.PUT)
    public Response<PageRequest> save(@RequestBody Student student,PageRequest pageRequest){
        boolean save = studentService.save(student);
        Response<PageRequest> response;
        if (save){
            response = ResponseGenerator.genSuccessResponse(pageRequest);
            response.setData(student);
        }else {
            response = ResponseGenerator.genFailResponse("插入失败");
        }
        return response;
    }
}

调用结果展示

1. 添加接口

在这里插入图片描述

2. 批量查询接口

在这里插入图片描述

3. 数据库展示

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值