MybatisPlus自定义枚举映射

发布时间 2023-07-24 10:31:10作者: 我也有梦想呀

1、问题的由来

在平时开发中多多少少肯定会遇到一些例如status...等特殊含义的字段值,虽然传递10:ADMIN,20:NORMAL可以解决业务需求,但是不是很直观

2、使用MP自定义枚举解决

User

package com.ly.plugins.mybatisplus;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * @author : ly
 */
@Accessors(chain = true)
@TableName("user")
@Data
public class User {
    @TableId
    private Integer id;
    private String username;
    private String password;
	// 自定义枚举类型
    private UserType userType;
}

UserType

package com.ly.plugins.mybatisplus;

import com.baomidou.mybatisplus.annotation.IEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @author : ly
 */
@Getter
@AllArgsConstructor
public enum UserType implements IEnum<Integer> {

    ADMIN(1, "admin"),
    NORMAL(2, "normal");

    private Integer code;

    private String val;

    @Override
    public Integer getValue() {
        return this.code;
    }
}

测试

package com.ly.plugins;

import com.ly.plugins.mybatisplus.User;
import com.ly.plugins.mybatisplus.UserMapper;
import com.ly.plugins.mybatisplus.UserType;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

/**
 * @author : ly
 */
@SpringBootTest
public class UserMapperTest {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void test01(){
        User user = new User().setId(2).setUsername("lisi").setPassword("321").setUserType(UserType.NORMAL);
        userMapper.insert(user);
    }

    @Test
    public void test02(){
        User user = userMapper.selectById(1);
        System.out.println("user = " + user);
    }
}

结果
image