今天在做数据导出的时候发现,数据库查询出来的List在excel导出的时候竟然报类型不匹配,因为在创建excelUtil的时候是通过<T>定义过要导出的数据对象类型,然而它还是在创建cell单元格的时候报错了。
原因出在xml定义返回的是一个resultMap,在定义resultMap的type的时候定义了错误的类型,然而select语句定义的是resultMap,关联的是resultMapId。只要把resultMap的type改成和java接口中定义的类型一致即可。
错误重现:
xxxxMapper.java
List<A> selectAlist();
==============================
xxxxMaper.xml
<resultMap type="B", id="C">
......
</resultMap>
<select id="selectAlist" resultMap="C">
......
</select>
==============================
xxxxServiceImpl.java
// 在这调用mapper的查询就会返回B类型的列表,而不是A类型,接口中定义的泛型被擦除。
本文介绍了一个关于MyBatis数据导出时遇到的类型不匹配问题及解决方案。问题源于XML映射文件中resultMap指定的类型与Java接口定义的类型不符,通过调整resultMap的类型设置为正确的Java类型解决了该问题。
360

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



