带MyBatis的订购套装

mic*_*man 3 java set sql-order-by mybatis

使用MyBatis定义集合实现的正确方法是什么?考虑下面的例子。我想LinkedHashSet从映射返回。Set如果我不想LinkedHashSet在映射接口中进行硬编码,应该在哪里指定实现。

映射片段:

<select id="selectAll" resultType="Language">
    SELECT 
        <include refid="languageColumns"/>
    FROM language
    ORDER BY ord
</select>
Run Code Online (Sandbox Code Playgroud)

映射界面:

public interface LanguageDAO {

    public Set<Language> selectAll();

}
Run Code Online (Sandbox Code Playgroud)

小智 5

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

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

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