1. 程式人生 > >mybatis報錯java.lang.UnsupportedOperationException原因及處理方法

mybatis報錯java.lang.UnsupportedOperationException原因及處理方法

起因

今天在請求資料庫資料時報錯java.lang.UnsupportedOperationException,從字面上理解錯誤的含義就是不支援的操作異常,後面定位到錯誤發生在資料庫sql語句中,具體原因就是resultType="java.util.List"有問題。返回的結果是一個List型別的集合,所有我用了這個resultType,但是不對的。需要使用string。

解釋

下面是我百度出來,別人總結的resultType可用型別
resultType:
1、基本型別 :resultType=基本型別
2、List型別: resultType=List中元素的型別
3、Map型別 單條記錄:resultType =map
多條記錄:resultType =Map中value的型別
1、如果返回值為基本型別,則resultType=基本型別,比如resultType=java.lang.Integer,那sql語句中只返回一個int型別資料,通常用於統計數量
2、如果返回值為list型別,則resultType=List中元素的型別,比如你需要返回一個List型別的資料,那麼這裡resultType=”java.lang.String”,如果需要返回一個實體類,那麼resultType=”com.pjf.mybatis.car”以此類推。
3、如果返回值為map單條型別,比如{username=”張三”},那麼resultType =”map”。
4、如果返回值為map多條記錄,比如{res=”實體類”},實體類就是你要請求的資料實體類,那麼resultType =Map中value的型別,比如resultType=”com.pjf.mybatis.car”

返回多條記錄的map時,key為任意一屬性,值為物件型別,不過key需要通過@MapKey(“hotelName”)指定物件中一個屬性名為key

`public interface HotelMapper {
    @MapKey("hotelName")
    public Map<String, Hotel> getHotel(Integer i);
}`

所以錯誤java.lang.UnsupportedOperationException主要是因為xml返回值型別有問題導致的,當然可能也有其他原因造成的。