學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>
以上均爲個人理解,如果錯誤之處,還望指教!!!