目录
1.前言
2.问题解决
2.1 在父依赖中添加版本管理
2.2 微服务中引入依赖
2.3 在application.yaml中进行配置
2.4 在枚举中添加注解
1.前言
今天在使用mybatis的时候,如下SQL查询遇到了报错(其中status为枚举类型,数据库中存的为整形):
select id, avatar, username, password, phone, status from user where phone = #{phone}
Error attempting to get column 'status' from result set. Cause: java.lang.IllegalArgumentException: No enum constant com.shop.user.enums.UserStatus.1] with root cause
发现原因是mybatis无法正常处理我的枚举类型,如下 :
java">public enum UserStatus {FROZEN(0, "禁止使用"),NORMAL(1, "已激活"),;int value;String desc;// 其它代码
}
2.问题解决
看了一些博客,也问了gpt,原生的mybatis处理起来确实比较麻烦,所有我选择mybatis plus,它仅仅需要一个注解就能完美解决问题,顺带也解决了select只查询一部分字段的问题。我的项目为springcloud项目,下面是我的解决方法。
2.1 在父依赖中添加mybatis plus版本管理
<!-- mybatis plus 管理 -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version>
</dependency>
2.2 微服务中引入依赖
<!-- mybatis plus -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
2.3 在application.yaml中进行配置
mybatis-plus:configuration:default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler
2.4 在枚举中添加注解
java">public enum UserStatus {FROZEN(0, "禁止使用"),NORMAL(1, "已激活"),;@EnumValueint value;String desc;// 其它代码
}