使用MyBatis定义集合实现的正确方法是什么。考虑下面的例子。我希望从映射中返回LinkedHashSet
。如果我不希望在映射界面中使用Set
硬编码,我应该在哪里指定LinkedHashSet
实现。
映射片段:
<select id="selectAll" resultType="Language">
SELECT
<include refid="languageColumns"/>
FROM language
ORDER BY ord
</select>
映射界面:
public interface LanguageDAO {
public Set<Language> selectAll();
}
答案 0 :(得分:4)
MyBatis将结果转换为方法的返回类型。
如果使用LinkedHashSet,它将创建LinkedHashSet。但是如果指定通用接口,它将使用默认实现。在Set的情况下,我认为它是一个HashSet。
您可以通过自己的行为来控制替换默认ObjectFactory的行为。看看MyBatis DefaultObjectFactory。