List<Map<String,String>> maps = todoMapper.seletLineDate();
// 此时的状态是List<Map<String,Object>>
Map<String, String> mapto = new HashMap<>();
for (Map<String, String> map : maps) {
mapto.put(map.get("time"), map.get("number"));
}
// 此时的状态是Map<String,Long>
如果用Map<String,String>
接返回值,会报Long
转String
的类型错误
<select id="seletLineDate" resultType="map">
select COUNT(task_uuid) number, end_date time
from todo
where user_uuid = #{userUuid}
and done = true
and end_date between #{startTime} and #{endTime}
group by end_date
order by end_date
</select>
原因是COUNT
返回的Number
类型会和Java
的Long
类型进行匹配
List<Map<String,String>> seletLineDate(String startTime, String endTime, String userUuid);
当Mapper
层用Map<String,String>
接数据时,仍然返回Map<String,Long>
只是明面上是Map<String,String>
修改方法
用Object
去接,或者转换COUNT
的返回结果,CONVERT(COUNT(task_uuid),CHAR)
PS:
该错误在编辑时不会报错,但是在运行时会报错