java - MyBatis 有序集

标签 java sql-order-by set mybatis

使用 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/

相关文章:

java - 将 Lucene 与 H2 数据库结合使用时出错

sql - 排序案例陈述的小节

php - 如何选择ID升序排列的多个表

javascript - JavaScript 是否将哈希表用于 Map 和 Set?

java - Java中两个集合的笛卡尔积

java - Maven和POI如何更好地理解Java中的Excel文件

java - 带 <?> 或不带 <?> 的泛型实例

MySQL 在设定时间内查询事务

java - 在 Java 中创建预填充集

java - 电话状态空闲时增加 float