1

我正在从 iBatis 迁移到 myBatis,我正面临这个问题:当我调用 selectList 方法时,它返回 aList<Object>而不是正确的类型(例如List<Document>),所以我在这里得到一个错误:

return createFiscalCodesMap(getSqlSession().selectList(STMT_LOAD, parameters));

private Map<String, String> createFiscalCodesMap(List<Document> documentList) { ... }

这是涉及的 xml 元素:

<select id="load" parameterType="java.util.Map" resultType="Document">...</select>

我读过 selectList 返回一个类型化的列表 ( List<E>),但我不知道如何获取它。

PS:我正在编写代码来自动迁移到 myBatis,所以我需要一种方法来解决问题而不需要改变很多东西。

编辑:我正在尝试不同的解决方案,但我无法弄清楚问题出在哪里。

这不起作用(错误:无法从List<Object>to 转换List<Document>):

return createFiscalCodesMap((List<Document>) getSqlSession().selectList(STMT_LOAD, parameters)); 

这有效:

List<Document> temp = getSqlSession().selectList(STMT_LOAD, parameters);
return createFiscalCodesMap(temp);
4

1 回答 1

1

由于 selectList 方法是在考虑泛型的情况下定义的,并且您没有在方法调用中使用泛型,因此返回一个对象列表是正常的。

避免错误的正确方法应该是使用泛型调用 selectList:

return createFiscalCodesMap(getSqlSession().<Document>selectList(STMT_LOAD, parameters));

请注意,从 MyBatis 3.1.0 开始支持带有泛型的 selectList,因此请确保您使用的是 3.1.0+ 来完成这项工作。

于 2015-06-16T19:51:25.793 回答