Mybatis查詢對象集合的問題

學mybatis有一段時間了,但是用法一直不是很熟悉,一直停留在能用就行,沒有去深究

這不,又出問題了

要求查詢數據庫返回多個實體對象,同張數據表的

一開始在mapper文件中的查詢是這樣的

<select id="ajaxPdb" resultType="java.util.HashMap">
        SELECT * FROM stu_examresultdetail
        WHERE uname=#{param1}
        AND lid=#{param2};
</select>

後端查詢接收是這樣的:(此處StuResultDetail爲實體類)

List<StuResultDetail> list=stuResultDetailService.ajaxPdb(username,id);

,以往的功能查詢到這裏,然後傳給前端模板或是js去遍歷,並沒有什麼問題

重點:但其實此處的list集合裏存儲的並不是實體類對象,而是map

所以如果想在後端處理就取出來遍歷,下面方法是不可行的

for(int i=0;i<list2.size();i++){
    StuResultDetail stu = list2.get(i);
	Map<String,String> map = new HashMap<>();
	....//數據處理
}

在StuResultDetail stu = list2.get(i);這一步就會報錯:

java.util.LinkedHashMap cannot be cast to 實體類

因爲集合里根本就不是實體類對象

都是基礎不牢固惹的禍

解決方法:

<select id="ajaxPdb" resultType="com.example.pojo.StuResultDetail">
    SELECT * FROM stu_examresultdetail
    WHERE uname=#{param1}
    AND lid=#{param2};
</select>

修改返回類型爲實體類對象

此處說明下:

mybatis查詢數據默認返回list集合,如果指定返回類型爲Int,查詢返回一條數據則返回int

一般情況下查詢多條數據,resultType中寫的是返回的集合中的類型,而不用寫List

例如resultType="java.util.HashMap",那返回的是list<HashMap>

 

以上均爲個人理解,如果錯誤之處,還望指教!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章