SpringBoot+Mybatis 实体使用枚举类型时报错: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是实体类中属性,项目中使用了数据库中_+小写转换为大写驼峰写法