mybatis plus 實體枚舉轉換的問題;No enum constant XX解決辦法


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是實體類中屬性,項目中使用了數據庫中_+小寫轉換為大寫駝峰寫法

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM