desc 枚举类型id_SpringBoot和MyBatisPlus中枚举自动转换

一、请求参数自动转换

@Getter

public enum UserType{

BACKEND(1, "后台"),

FRONT(2, "前台"),

;

@JsonCreator

UserType(Integer val, String desc) {

this.val = val;

this.desc = desc;

}

@EnumValue

private final Integer val;

@JsonValue

private final String desc;

}

@Data

@TableName("demo")

@Accessors(chain = true)

public class Demo {

@TableId

private Integer id;

private String name;

private Integer age;

private UserType userType;

}

@Api

@RequestMapping("/demo")

@RestController

public class DemoController {

@Resource

private DemoService demoService;

@ApiOperation("根据id获取数据")

@GetMapping("/{id}")

public R getById(@PathVariable Integer id) {

Demo demo = demoService.getById(id);

return R.ok(demo);

}

@ApiOperation("测试枚举")

@PostMapping("/testEnum")

public R testEnum(@RequestBody Demo demo) {

return R.ok(demo);

}

}

二、MyBatisPlus枚举转换

版本依赖

com.baomidou

mybatis-plus-boot-starter

3.2.0

yml配置

mybatis-plus:

#扫描,多个package用逗号或者分号分隔

typeEnumsPackage: com.taco.springcloud.*.enums

使用方法

使用枚举@EnumValue

@Getter

public enum UserType{

BACKEND(1, "后台"),

FRONT(2, "前台"),

;

@JsonCreator

UserType(Integer val, String desc) {

this.val = val;

this.desc = desc;

}

@EnumValue

private final Integer val;

@JsonValue

private final String desc;

}

实现接口IEnum

@Getter

public enum UserType implements IEnum {

BACKEND(1, "后台"),

FRONT(2, "前台"),

;

@JsonCreator

UserType(Integer val, String desc) {

this.val = val;

this.desc = desc;

}

private final Integer val;

@JsonValue

private final String desc;

@Override

public Integer getValue() {

return val;

}

}

三、可能存在的问题

如果数据库中使用的tinyint(1)那么在mybatis将会映射为boolean,使用Integer作为枚举类的值会映射失败,一值为Null

解决方法

使用tinyint(4),因为tinyint(1)和tinyint(4)占用的空间是一样,故没有影响。

在数据连接参数加上tinyInt1isBit=false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值