SpringBoot+Mybatis使用Enmu枚举类型总是报错 No enum constant XX解决办法
环境SpringBoot+Mybatis
比如:
数据库中User表存放status字段值为1,想要通过Mybatis转换后为正在使用
当然,可以使用if else 但是状态值很多时,就变得很复杂,且不利于维护,故需要用到枚举类
数据库查询时获得status值为1,通过Mybatis依照枚举类进行转换获取到对应的状态
之前使用时总是报错:
Wed Jan 02 10:59:18 CST 2019
There was an unexpected error (type=Internal Server Error, status=500).
nested exception is org.apache.ibatis.executor.result.ResultMapException:Error attempting to get column 'qu_type' from result set.Cause: java.lang.IllegalArgumentException: No enum constant com.test.model.survey.QuType.1
此时的实体类代码如下:
public class Question {private String id;// 类型private QuType quType;。。get set
}
枚举类代码:
public enum QuType {YESNO("是否","yesno", 0);private String quName;private String quEnName;private int index;QuType(String quName,String quEnName,int index){this.cnName=quName;this.quEnName=quEnName;this.index=index;}..get set
}
Mybatis文件如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.test.mapper.QuestionMapper"><select id="getQuestionById" resultType="Question">SELECT * FROM question WHERE id = #{Id}</select></mapper>
此时就会报错:No enum constant com.test.model.survey.QuType.1
原因是无法使用Mybatis默认的转换器EnumTypeHandler 进行转换,解决方法:
只需要修改mybatis文件,添加ResultMap配置,对需要枚举转换的字段配置特定的转换类EnumOrdinalTypeHandler
如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.test.mapper.QuestionMapper"><resultMap id="questionMap" type="com.test.model.survey.Question" ><id column="id" property="id"/><result column="qu_type" property="quType" typeHandler="org.apache.ibatis.type.EnumOrdinalTypeHandler"/></resultMap><select id="getQuestionById" resultMap="questionMap">SELECT * FROM question WHERE id = #{Id}</select></mapper>
注意!:
1:查询中resultType修改为ResultMap,否则会报 can not find class XXX
2:此处Result属性中,column对应的是数据库中字段,property是实体类中属性,项目中使用了数据库中_+小写转换为大写驼峰写法的配置
SpringBoot+Mybatis使用Enmu枚举类型总是报错 No enum constant XX解决办法相关推荐
- java 枚举报错 No enum constant XX 处理方法
先看看代码是否同步,字典值是否转化中文:其次看看是否数据库存了这个字典值的数据,但是代码还没有更新到最新
- 计算机开机故障报错,笔记本电脑开机报错故障的原因及解决办法
笔记本电脑开机报错故障是指笔记本电脑开机自检时或启动操作系统前停止启动,在显示屏 出现一些错误提示的故障. 笔记本电脑开机报错故障的原因及解决办法 造成此类故障的原因一般是笔记本电脑在启动自检时,检测 ...
- oracle pls 00905,【案例】Oracle报错PLS-00714 PLS-00951原因和解决办法笔记
[案例]Oracle报错PLS-00714 PLS-00951原因和解决办法笔记 时间:2016-11-14 11:07 来源:Oracle研究中心 作者:代某人 点击: 次 天萃荷净 P ...
- 0x80070422报错、0x6D9报错,无法开启防火墙解决办法(方法版)
0x80070422报错.0x6D9报错,无法开启防火墙解决办法 一.现象 现象1-报错0x80070422 现象2-报错0x6D9 二.解决方法 1.打开服务 2.打开防火墙服务 一.现象 现象1- ...
- 微信老是不能登录服务器错误,微信登录失败报错“4-100”的原因及解决办法
微信登录失败报错"4-100"怎么办?微信是目前为止大家最喜欢的社交软件了,如果微信登录不了,整个人都不好了.最近就有用户遇到手机微信登录不了的情况,错误代码为"4-10 ...
- Mac 升级后git pull 报错fatal: Authentication failed for 解决办法
转载:Mac 升级后git pl 报错fatal: Authentication failed for 解决办法 - 简书 git pull,,,报错如下: cat .git/config git r ...
- springboot+mybatis打包时,单元测试类报错
报错信息: 2019-04-01 14:33:10.703 ERROR 1957 --- [ main] o.s.test.context.TestContextManager : Caught ex ...
- Spring Boot连接MySQL报错“Internal Server Error”的解决办法
报错信息如下: {timestamp: "2018-06-14T03:48:23.436+0000", status: 500, error: "Internal Ser ...
- strict standards php报错,Bigcommerce:PHP版本升级错误解决办法_PHP教程
报错内容一:Strict Standards: Declaration of....should be compatible with ..... Strict Standards: Declarat ...
最新文章
- JdbcTemplate在Spring的ioc中使用
- buu [BJDCTF 2nd]rsa1
- Tesseract OCR——Windows 10 + CMake-GUI + Visual Studio 2019下编译和使用解决方案
- 网站后台中对html标签的处理
- LeetCode3:Longest Substring Without Repeating Characters
- 世界上十大数据中心,全球数字经济顶梁柱
- java编写母亲节快乐_写在母亲节来临之际
- Jenkins:项目配置
- Mybaties入门介绍
- css3之 谜灯卡片_纯css3灯泡开关特效代码
- Linux命令和vim的使用
- 顺丰快递如何凭收件人电话和单号批量查询物流信息
- php排斥ajaxsubmit函数,关于php:ajaxsubmit错误捕获
- 白帽子讲web安全读后感1
- 各银行支付/各种支付平台/php对接支付接口心得/php h5支付接口对接
- 现代控制理论教学与半年工作总结(~)
- 获取Excel合并单元格的值
- [转]设置IE背景色保护你的眼睛视力_鹤壁吧_贴吧
- [转载]如何提高.NET Compact Framework应用程序的性能 - 黎波 - 博客园
- 字符转换 (15分)