我正在从iBatis迁移到myBatis,并且遇到了这个问题:当我调用selectList方法时,它返回一个List<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>
投射到List<Document>
):return createFiscalCodesMap((List<Document>) getSqlSession().selectList(STMT_LOAD, parameters));
这有效:
List<Document> temp = getSqlSession().selectList(STMT_LOAD, parameters);
return createFiscalCodesMap(temp);
最佳答案
由于selectList方法是在考虑泛型的情况下定义的,并且您没有在方法调用中使用泛型,因此返回对象列表是正常的。
避免错误的正确方法应该是使用泛型调用selectList:
return createFiscalCodesMap(getSqlSession().<Document>selectList(STMT_LOAD, parameters));
请注意,自MyBatis 3.1.0起支持带有泛型的selectList,因此请确保您使用3.1.0+来完成这项工作。
关于java - 在myBatis中键入selectList,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13083023/