MybatisPlus通用枚举

简介: MybatisPlus通用枚举

胡马依北风,越鸟巢南枝。一一《古诗十九首》

在项目开发中,经常数据库中的一个字段对应一个枚举

对于这些枚举,我们要使用数据库将他们的值映射起来

MybatisPlus为我们提供了优雅的解决方案

只需要配置中添加枚举处理器,开启通用枚举支持

mybatis-plus:
  #指定Mybatis的Mapper文件
  mapper-locations: classpath:mappers/*xml
  #指定Mybatis的实体目录
  type-aliases-package: com.ruben.pojo.po
  configuration:
    # 开启mybatis日志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    # 开启通用枚举支持,默认使用ordinalType
    default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler

然后如果是对于一些简单的枚举,例如使用ordinal和数据库的值映射的枚举,我们可以直接使用

比如此处UserDetail中使用GenderEnum

在数据库中:0对应女,1对应男

package com.ruben.simplescaffold.enumration;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
 * 性别枚举
 *
 * @author <achao1441470436@gmail.com>
 * @since 2021/8/5 15:35
 */
@Getter
@AllArgsConstructor
public enum GenderEnum {
    /**
     * Cheating the compiler.
     */
    WOMAN("女"),
    MAN("男");
    private final String desc;
}

我们直接执行查询,可以看到是能成功映射上

package com.ruben.simplescaffold;
import com.ruben.simplescaffold.service.IUserDetailService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
/**
 * Springboot测试类
 *
 * @author <achao1441470436@gmail.com>
 * @since 2021/7/11 0011 18:11
 */
@SpringBootTest
class SimpleScaffoldApplicationTests {
    @Resource
    private IUserDetailService userDetailService;
    @Test
    void contextLoads() {
        System.out.println(userDetailService.list());
    }
}

但如果我们需要使用其他的值,我们也可以使用如下方式:

1.注解方式

package com.ruben.simplescaffold.enumration;
import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
 * 性别枚举
 *
 * @author <achao1441470436@gmail.com>
 * @since 2021/8/5 15:35
 */
@Getter
@AllArgsConstructor
public enum GenderEnum {
    /**
     * Cheating the compiler.
     */
    MALE("男", 1),
    FEMALE("女", 0);
    private final String desc;
    @EnumValue
    private final Integer value;
}

注意此处对应数据库字段的长度为tinyint不指定长度,如果指定长度为1,则默认会失效

2.以及实现com.baomidou.mybatisplus.annotation.IEnum接口

package com.ruben.simplescaffold.enumration;
import com.baomidou.mybatisplus.annotation.IEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
 * 性别枚举
 *
 * @author <achao1441470436@gmail.com>
 * @since 2021/8/5 15:35
 */
@Getter
@AllArgsConstructor
public enum GenderEnum implements IEnum<Integer> {
    /**
     * Cheating the compiler.
     */
    MALE("男", 1),
    FEMALE("女", 0);
    private final String desc;
    private final Integer value;
}

注意这里需要实现getValue方法,我使用了@Getter注解所以没有写

同样可以看到我们的gender数据库中存储的值为1

映射成为了我们的MALE

相关文章
|
6月前
|
前端开发 Java 数据库连接
MyBatis查询优化:枚举在条件构建中的妙用
MyBatis查询优化:枚举在条件构建中的妙用
|
数据库连接 测试技术 数据库
MybatisPlus之通用枚举&代码生成器&多数据源
今天我们来了解MyBatisplus 的通用枚举和代码生成器和多数据源。
MyBatis-Plus之枚举
MyBatis-Plus之枚举
107 0
|
6月前
|
SQL 存储 测试技术
深入了解MyBatis-Plus中的枚举处理器及实例演示
深入了解MyBatis-Plus中的枚举处理器及实例演示
338 0
|
存储 JSON Java
mybatisPlus之通用枚举及字段类型处理器
mybatisPlus之通用枚举及字段类型处理器
|
Java 数据库连接 数据库
解析Java中的MyBatis Plus注解 @EnumValue:优雅处理枚举值映射
在数据库操作中,枚举类型的值往往需要与数据库表中的某个字段进行映射,以便在操作中能够进行相应的转换。MyBatis Plus作为一款强大的ORM框架,提供了注解 `@EnumValue`,使开发者能够更加灵活地处理枚举值与数据库字段的映射关系,从而减少了繁琐的转换逻辑。本文将详细介绍 `@EnumValue` 注解的用法及其在持久层开发中的应用。
3574 0
|
Java 数据库连接 数据库
深入了解Java中的MyBatis Plus注解 @IEnum:优雅处理枚举映射
在数据库操作中,经常需要将Java中的枚举类型映射到数据库表中的某个字段。MyBatis Plus作为一款强大的ORM框架,提供了注解 `@IEnum`,使得开发者能够更加优雅地处理枚举与数据库字段之间的映射关系。本文将详细介绍 `@IEnum` 注解的用法及其在持久层开发中的应用。
694 0
|
存储 前端开发 Java
使用mybatisplus的通用枚举实现存储显示相分离
使用mybatisplus的通用枚举实现存储显示相分离
244 0
使用mybatisplus的通用枚举实现存储显示相分离
|
存储 测试技术 数据库
Mybatis-Plus的分页 乐观锁插件 通用枚举 多数据源(二)
Mybatis-Plus的分页 乐观锁插件 通用枚举 多数据源(二)
208 0
Mybatis-Plus的分页 乐观锁插件 通用枚举 多数据源(二)