欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot+Mybatis使用Enum枚舉類型總是報錯No enum constant XX問題

 更新時間:2023年12月27日 08:49:30   作者:Damionew  
這篇文章主要介紹了SpringBoot+Mybatis使用Enum枚舉類型總是報錯No enum constant XX問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

SpringBoot+Mybatis使用Enum枚舉類型總是報錯No enum constant XX

環(huán)境SpringBoot+Mybatis

比如:

數(shù)據(jù)庫中User表存放status字段值為1,想要通過Mybatis轉(zhuǎn)換后為正在使用

當然,可以使用if else 但是狀態(tài)值很多時,就變得很復雜,且不利于維護,故需要用到枚舉類

數(shù)據(jù)庫查詢時獲得status值為1,通過Mybatis依照枚舉類進行轉(zhuǎn)換獲取到對應的狀態(tài)

之前使用時總是報錯

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默認的轉(zhuǎn)換器EnumTypeHandler 進行轉(zhuǎn)換,

解決方法

只需要修改mybatis文件,添加ResultMap配置,對需要枚舉轉(zhuǎn)換的字段配置特定的轉(zhuǎn)換類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>

注意?。?/p>

1:查詢中resultType修改為ResultMap,否則會報 can not find class XXX

2:此處Result屬性中,column對應的是數(shù)據(jù)庫中字段,property是實體類中屬性,項目中使用了數(shù)據(jù)庫中_+小寫轉(zhuǎn)換為大寫駝峰寫法的配置

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 使用Java實現(xiàn)百萬Excel數(shù)據(jù)導出

    使用Java實現(xiàn)百萬Excel數(shù)據(jù)導出

    這篇文章主要為大家詳細介紹了如何使用Java實現(xiàn)百萬Excel數(shù)據(jù)導出,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以參考一下
    2024-03-03
  • java實現(xiàn)interceptor攔截登錄權限

    java實現(xiàn)interceptor攔截登錄權限

    Java里的攔截器是動態(tài)攔截action調(diào)用的對象,本文主要介紹了java實現(xiàn)interceptor攔截登錄權限,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Java org.w3c.dom.Document 類方法引用報錯

    Java org.w3c.dom.Document 類方法引用報錯

    這篇文章主要介紹了Java org.w3c.dom.Document 類方法引用報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java簡單模擬實現(xiàn)一個線程池

    Java簡單模擬實現(xiàn)一個線程池

    本文主要介紹了Java簡單模擬實現(xiàn)一個線程池,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-01-01
  • Kotlin協(xié)程與并發(fā)深入全面講解

    Kotlin協(xié)程與并發(fā)深入全面講解

    Android官方對協(xié)程的定義-協(xié)程是一種并發(fā)設計模式,您可以在Android平臺上使用它來簡化異步執(zhí)行的代碼。協(xié)程是在版本1.3中添加到Kotlin的,它基于來自其他語言的既定概念
    2022-11-11
  • Java反射 JavaBean對象自動生成插入,更新,刪除,查詢sql語句操作

    Java反射 JavaBean對象自動生成插入,更新,刪除,查詢sql語句操作

    這篇文章主要介紹了Java反射 JavaBean對象自動生成插入,更新,刪除,查詢sql語句操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 詳解如何在Spring Boot中實現(xiàn)容錯機制

    詳解如何在Spring Boot中實現(xiàn)容錯機制

    容錯機制是構(gòu)建健壯和可靠的應用程序的重要組成部分,它可以幫助應用程序在面對異常或故障時保持穩(wěn)定運行,Spring Boot提供了多種機制來實現(xiàn)容錯,包括異常處理、斷路器、重試和降級等,本文將介紹如何在Spring Boot中實現(xiàn)這些容錯機制,需要的朋友可以參考下
    2023-10-10
  • Intellij IDEA連接Navicat數(shù)據(jù)庫的方法

    Intellij IDEA連接Navicat數(shù)據(jù)庫的方法

    這篇文章主要介紹了Intellij IDEA連接Navicat數(shù)據(jù)庫的方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借價值,需要的朋友可以參考下
    2021-03-03
  • Java獲取時間如何將當前時間減一天、一月、一年、并格式化

    Java獲取時間如何將當前時間減一天、一月、一年、并格式化

    這篇文章主要介紹了Java獲取時間,將當前時間減一天、一月、一年,并加以格式化,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • Java編程時間日期API實例解析

    Java編程時間日期API實例解析

    本文主要介紹了Java編程時間日期API實例解析的相關內(nèi)容,分享了一則實例,具有一定借鑒價值,需要的朋友可以參考下。
    2018-01-01

最新評論