欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Mybatis-plus使用枚举类型定义属性映射数据库

程序员文章站 2022-04-15 17:51:31
在业务种常常会出现数据库内的字段是char类型,然后需要判断类型返回给前端例如数据库 0表示性别为男,1表示性别为女,然后Entity实体类内通过Integer进行映射,然后再返回给前端时通常需要判断后再返回,这样不但闲的很臃肿,也布不利于维护,因此我们可以使用Mybatis-Plus的提供的枚举功能去解决这种场景1:创建枚举类型public enum UserSexEnum { Male("男","m"), Female("女","f"), Other("其他","n");...

在业务种常常会出现数据库内的字段是char类型,然后需要判断类型返回给前端
例如数据库 0表示性别为男,1表示性别为女,然后Entity实体类内通过Integer进行映射,然后再返回给前端时通常需要判断后再返回,这样不但闲的很臃肿,也布不利于维护,因此我们可以使用Mybatis-Plus的提供的枚举功能去解决这种场景

1:创建枚举类型

public enum UserSexEnum {
    Male("男","m"),
    Female("女","f"),
    Other("其他","n");


    private UserSexEnum(String name,String value){
        this.name = name;
        this.value = value;
    }


    private String name;
    @EnumValue//MP提供的枚举表示插入数据库时插入该值
    private String value;


    @Override
    public String toString(){
        System.out.println("调用 toString");
        return this.name;
    }

    @JsonValue //get方法上加上此注解表示对枚举序列化时返回此字段
    public String getName() {
        return name;
    }

    public String getValue() {
        return value;
    }

}

2 实体类内使用该注解

@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
@TableName("user")
public class User  {

    @TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
    private Date birthday;
    private String cmd;
    private UserSexEnum sex =UserSexEnum.Other; //使用枚举
}

3 使用:
在添加时,前端传来的sex应该为 Male,Female或者Other然后mybatis-plus就活获取对应枚举的value值插入数据库。
当查询数据时,mybatis-plus也会将数据库的类型映射为枚举,然后利用Jackson返回男,女或其他

本文地址:https://blog.csdn.net/dndndnnffj/article/details/109842130