springMvc和mybatis-plus中枚举值和字段的映射
更新时间:2023年05月28日 12:02:05 作者:forest
这篇文章主要为大家介绍了springMvc和mybatis-plus中枚举值和字段的映射示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
DB和entity之间的映射
最近看到有人使用这几个注解,就稍微了解了一下各自的用法,发现枚举在前后台传值,DB和entity之间的映射很方便
- 1.使用@JsonCreator,可以将前台的属性值直接转换为枚举类型
- 2.@EnumValue 将枚举中的指定的值直接存储到数据库,不需要再手动转换
- 3.@JsonValue 后台返回前台数据时也不需要转换,可以直接返回指定的值
案例:
User实体
@TableName("user") @Data public class User { private Integer id; private String name; private Integer age; private SexEnum sex; }
枚举类
public enum SexEnum { MALE(1,"男"), FEMALE(2,"女") ; @EnumValue //数据库中直接存入枚举属性val的值 private Integer val; @JsonValue //序列化枚举对象时,返回其属性desc的值 private String desc; SexEnum(Integer val, String desc) { this.val = val; this.desc = desc; } /** * 1.通过属性desc获取对应的枚举 * 2.JsonCreator加在构造方法或者静态方法上,为对象的反序列化指定构造逻辑 * 3.前端向后台传输json参数,json反序列化成对象时会自动调用这个方法 */ @JsonCreator public static SexEnum fromDesc(String desc) { System.out.println("进入枚举自定义构造方法"); for(SexEnum sexEnum : SexEnum.values()) { if(sexEnum.getDesc().equals(desc)) { return sexEnum; } } return null; } public Integer getVal() { return val; } public void setVal(Integer val) { this.val = val; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } }
请求类
@RequestMapping("/getUser") @ResponseBody public User getUser(User u) { //返回数据给前台时,序列化对象时,其中的枚举类型会根据@JsonValue指定的字段进行处理 User user = userService.getUser(); return user; } @RequestMapping("/save_user") @ResponseBody public String saveUser(@RequestBody User u) { //前台传入Sex字符串,直接转换为枚举对象 // json反序列化时自动调用了SexEnum中的fromDesc()获取枚举对象,然后赋值给u中的sex userService.saveUser(u); return "success"; }
效果图
postman中的入参,一定要使用json格式,使用表单无效果
看到控制台打印了一句话,说明反序列化枚举对象时,使用了我们自定义的方法
可以看到sex属性中的值前端传入的值‘男’,但是后台接收到为SexEnum的"MALE"
数据库中的数据,按照@EnumValue指定的属性存入数据
从数据库中查询的数据,枚举按照我们使用@jsonValue的字段返回值
以上就是springMvc和mybatis-plus中枚举值和字段的映射的详细内容,更多关于springMvc mybatis-plus的资料请关注脚本之家其它相关文章!
相关文章
java request.getParameter中文乱码解决方法
今天跟大家分享几个解决java Web开发中,request.getParameter()获取URL中文参数乱码的解决办法,需要的朋友可以参考下2020-02-02Java中Array List与Linked List的实现分析
这篇文章主要给大家介绍了关于Array List与Linked List实现的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧2019-09-09
最新评论