使用 MyBatis 定义集合实现的正确方法是什么。考虑下面的例子。我希望从映射中返回 LinkedHashSet
。如果我不想在映射接口(interface)中硬编码 LinkedHashSet
,我应该在哪里指定 Set
实现。
映射片段:
<select id="selectAll" resultType="Language">
SELECT
<include refid="languageColumns"/>
FROM language
ORDER BY ord
</select>
映射接口(interface):
public interface LanguageDAO {
public Set<Language> selectAll();
}
最佳答案
MyBatis 将结果转换为您的方法的返回类型。
如果您使用 LinkedHashSet,它将创建一个 LinkedHashSet。但是,如果您指定一个通用接口(interface),它将使用默认实现。对于 Set,我认为它是一个 HashSet。
您可以控制该行为,用您自己的行为替换默认的 ObjectFactory。看看 MyBatis DefaultObjectFactory。
关于java - MyBatis 有序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10582873/