3

使用 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();

}
4

1 回答 1

5

MyBatis 将结果转换为方法的返回类型。

如果您使用 LinkedHashSet,它将创建一个 LinkedHashSet。但是,如果您指定通用接口,它将使用默认实现。在 Set 的情况下,我认为它是一个 HashSet。

您可以控制该行为,用您自己的替换默认的 ObjectFactory。看看 MyBatis DefaultObjectFactory。

于 2012-05-19T17:42:39.080 回答