当前位置: 首页> 财经> 股票 > MybatisPlus——扩展功能(二)

MybatisPlus——扩展功能(二)

时间:2025/7/12 6:39:36来源:https://blog.csdn.net/m0_74197695/article/details/141095825 浏览次数:0次

扩展功能

3.通用枚举

        MybatisPlus提供了一个处理枚举的类型转换器,可以帮我们把枚举类型与数据库类型自动转换

例如:我们数据库采用的是int类型,对应的PO也是Integer。因此业务操作时必须手动把枚举Integer转换,非常麻烦。

3.1.定义枚举

首先定义一个用户状态的枚举:

代码如下:

package com.itheima.mp.enums;import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.Getter;@Getter
public enum UserStatus {NORMAL(1, "正常"),FREEZE(2, "冻结");private final int value;private final String desc;UserStatus(int value, String desc) {this.value = value;this.desc = desc;}
}

然后把User类中的status字段改为UserStatus 类型:

        要让MybatisPlus处理枚举数据库类型自动转换,我们必须告诉MybatisPlus,枚举中的哪个字段的值作为数据库值。 MybatisPlus提供了@EnumValue注解来标记枚举属性:

3.2.配置枚举处理器

在application.yaml文件中添加配置:

mybatis-plus:configuration:default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler

3.3.测试

@Test
void testService() {List<User> list = userService.list();list.forEach(System.out::println);
}

最终,查询出的User类的status字段会是枚举类型:

程序在返回给前端结果时是Spring MVC进行处理,Spring MVC底层在处理时JSON格式的数据时可以使用注解,让页面查询结果也是枚举格式。

        在UserStatus枚举中通过@JsonValue注解标记JSON序列化时展示的字段:

4.JSON类型处理器

假设数据库的user表中有一个info字段,是JSON类型:

格式像这样:

{"age": 20, "intro": "佛系青年", "gender": "male"}

        而目前User实体类中却是String类型。这样一来,我们要读取info中的属性时就非常不方便。如果要方便获取,info的类型最好是一个Map或者实体类。

        而一旦我们把info改为对象类型,就需要在写入数据库时手动转为String,再读取数据库时,手动转换为对象,这会非常麻烦。

        因此MybatisPlus提供了很多特殊类型字段的类型处理器,解决特殊字段类型与数据库类型转换的问题。例如处理JSON就可以使用JacksonTypeHandler处理器。

4.1.定义实体

首先,我们定义一个单独实体类来与info字段的属性匹配:

package com.itheima.mp.domain.po;import lombok.Data;@Data
public class UserInfo {private Integer age;private String intro;private String gender;
}

4.2.使用类型处理器

接下来,将User类的info字段修改为UserInfo类型,并声明类型处理器:

测试可以发现,所有数据都正确封装到UserInfo当中了

关键字:MybatisPlus——扩展功能(二)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: