1. 程式人生 > 其它 >mybatis查詢結果集有泛型屬性時可能出現的問題。

mybatis查詢結果集有泛型屬性時可能出現的問題。

技術標籤:錯誤記錄框架學習mysqlmybatis

mybatis查詢結果集有泛型屬性時可能出現的問題。

問題:當接收結果為map或者物件的屬性為泛型時:

@Data
public class GenericKeyValueVo<K,V> {

    private K key;

    private V value;

}

這時候如果直接將resultType指向物件全限定名稱時,可能會出現問題。因為如果查詢結果的某個欄位大於1000會出現","如:1,000.56 。mybatis不會報錯,因為這個物件的這個屬性為泛型,可以接收。而當獲取結果之後即使定義接收的變數型別為:

在這裡插入圖片描述
第二個屬性也會存入String型別的值。後續再處理可能就會出現將string轉為double資料型別轉換錯誤。
解決方法:
定義一個resultMap,指明javaType

    <resultMap id="StrKeyDoubleValueMap" type="com.meinergy.mkting.commons.entity.wholesale.vo.GenericKeyValueVo">
        <result column="key" property="key" javaType=
"java.lang.String"/> <result column="value" property="value" javaType="java.lang.Double"/> </resultMap>

再用一個convert函式規範查詢結果格式

convert(FORMAT(queryResult, decimal(12, 2))