Expected one result (or null) to be returned by selectOne() 數據庫結果集和java實例


mybatis會根據查詢的結果集初始化java實例。

如果是復雜類型,我們一般都會在mapper中做好映射。

1.所以如果查詢到的是多個結果,那么對應的java類型也必須的集合類型。(result 為泛型或者集合元素類型,dao接口必須為集合)

    如:   xml:<select id='xx' resultType='java.lang.String'>   接口:String[] xx();

2.但是有一種,結果集雖然是多個,但是需要是一個實例。

  如:查詢班級及學生 SELECT * FROM clazz LEFT JOIN student on。。。。

  我們對應java實例就是clazz即{ clazzName, student[] }。

  所以這條語句,只要不是只有一個學生那么肯定會有多條結果。但是我們需要mybatis為我們創建一個實例。

  這個也就是 resultMap,resultType 的區別。resultMap 是我們做好映射關系的,里面有collection屬性,所以mybatis會為我們創建一個實例。

  如果使用resultType ,mybatis就會說:Expected one result (or null) to be returned by selectOne() 。查出來好幾個,你就要一個,要哪個啊?

所以,出現這個問題 Expected one result (or null) to be returned by selectOne()。第一是產生多個結果,我們也要多個,但是接收類型寫錯了。第二就是產生多個,但是我們需要一個,(因為多個結果其實對java是一個實例)那么就是映射沒有做好,或者使用了resultType,而不是resultMap。

 


免責聲明!

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



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