mybatis-plus使用@EnumValue处理枚举类型

自mybatis3.1.0开始,如果你无需使用原生枚举,可配置默认枚举来省略扫描通用枚举配置 默认枚举配置

1、配置文件配置枚举所在的包

#配置枚举 支持通配符 * 或者 ; 分割
mybatis-plus.type-enums-package=com.iscas.biz.mp.test.model.enums
mybatis-plus.configuration.default-enum-type-handler=org.apache.ibatis.type.EnumOrdinalTypeHandler

2、定义一个枚举,在需要存入数据库的字段上加上@EnumValue注解

package com.iscas.biz.mp.test.model.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import com.fasterxml.jackson.annotation.JsonView;
import com.iscas.biz.mp.test.model.TestEntity;
import lombok.Getter;

import java.util.Objects;

/**
 * //TODO
 *
 * @author zhuquanwen
 * @vesion 1.0
 * @date 2020/4/5 15:23
 * @since jdk1.8
 */

public enum  SexEnum /*implements IEnum<Integer>*/ {

    /**
     * 男
     * */
    MAN(1, "男"),

    /**
     * 女
     * */
    WOMEN(2, "女");


    @EnumValue
    private final int code;

    @JsonValue
    public int getCode() {
        return this.code;
    }

    public String getDescription() {
        return description;
    }

    private final String description;
    SexEnum(int val, String description) {
        this.code = val;
        this.description = description;
    }

    @JsonCreator
    public static SexEnum getByCode(int code) {
        for (SexEnum value : SexEnum.values()) {
            if (Objects.equals(code, value.getCode())) {
                return value;
            }
        }
        return null;
    }
/*
    @Override
    public Integer getValue() {
        return code;
    }*/
}

3、测试实体使用枚举

package com.iscas.biz.mp.test.model;

import com.iscas.biz.mp.test.model.enums.SexEnum;
import lombok.Data;

/**
 * //TODO
 *
 * @author zhuquanwen
 * @vesion 1.0
 * @date 2020/4/5 15:22
 * @since jdk1.8
 */
@Data
public class TestEntity {
    private String name;

    private SexEnum sex;
}

4、测试读取和存储带有枚举的实体

package com.iscas.biz.mp.test.controller;

import com.iscas.biz.mp.test.mapper.TestEntityMapper;
import com.iscas.biz.mp.test.model.enums.SexEnum;
import com.iscas.biz.mp.test.model.TestEntity;
import com.iscas.templet.common.BaseController;
import com.iscas.templet.common.ResponseEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * //TODO
 *
 * @author zhuquanwen
 * @vesion 1.0
 * @date 2020/4/5 15:22
 * @since jdk1.8
 */
@RestController
@RequestMapping("/testEntity")
public class TestMpEnumController extends BaseController {
    @Autowired
    private TestEntityMapper testEntityMapper;

    @GetMapping("/get")
    public ResponseEntity testEntity() {
        ResponseEntity response = getResponse();
        List<TestEntity> testEntities = testEntityMapper.selectList(null);
        response.setValue(testEntities);
        return response;
    }
    @PostMapping("/post")
    public ResponseEntity testSaveEntity(@RequestBody TestEntity testEntity) {
        ResponseEntity response = getResponse();
        int insert = testEntityMapper.insert(testEntity);
        response.setValue(insert);
        return response;
    }

}

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
Mybatis-Plus中的枚举类主要有两种使用方式。第一种是通过使用@EnumValue注解来处理枚举类型。这种方式需要在实体属性上使用@EnumValue注解,并且在数据库中对应的字段上添加EnumValue注解,用于标识该字段为枚举类型的存储字段。示例代码如下所示: ```java public class User { // ... @EnumValue private AgeEnum age; // ... } public enum AgeEnum implements IEnum<Integer> { // ... } ``` 第二种方式是直接在实体属性中使用原生的枚举类型,并且在枚举类中使用@EnumValue注解来标识对应的数据库字段。示例代码如下所示: ```java public class User { // ... private GradeEnum grade; // ... } public enum GradeEnum { // ... @EnumValue GRADE_A(1), // ... } ``` 在配置方面,需要注意在扫描枚举包时,需要配置相关的扫描路径,以确保Mybatis-Plus能够正确地扫描到枚举类。具体的配置方式可以根据使用的框架进行相应的配置,例如在Spring Boot中可以参考如下的配置方式: ```java @Configuration public class MybatisPlusConfig { @Bean public ConfigurationCustomizer configurationCustomizer() { return configuration -> { // 扫描枚举包 configuration.getTypeHandlerRegistry().register("com.example.enums"); }; } } ``` 总之,Mybatis-Plus中的枚举类使用可以通过使用@EnumValue注解或者原生枚举类型配合@EnumValue注解来处理。在配置方面,需要确保正确配置枚举包的扫描路径。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值