学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>
以上均为个人理解,如果错误之处,还望指教!!!
在使用Mybatis时遇到将查询结果转换为实体类对象的问题,原本以为查询返回的list是实体类集合,但实际上返回的是LinkedHashMap。错误信息为`java.util.LinkedHashMap cannot be cast to 实体类`。解决方法是明确指定查询结果的返回类型为实体类,避免直接使用HashMap。通过修正mapper文件中resultType的设置,可以确保查询返回的对象是实体类实例。
6333

被折叠的 条评论
为什么被折叠?



