在Mybatis中的另一个结果Map中选择整数列表作为集合

时间:2016-01-12 11:26:39

标签: collections mybatis

我想在Mybatis的Result Map中选择Collection of Integers作为Collection。我无法找到解决方法。

结果类是

class Mapping {
private String name;
private List<Integer> ids;
}

Mybatis如下:

<resultMap id="mapping" type="some.package.Mapping">
        <result property="name" column="name"/>
        <collection property="ids" column="id" javaType="java.util.List" ofType="java.lang.Integer" />
</resultMap>

<select id="getMapping" resultMap="mapping">
        SELECT name, id
        FROM mapping
    </select>

此代码对我不起作用。 我错过了什么?

2 个答案:

答案 0 :(得分:4)

要在单个resultMap中获取整数列表,您可以使用:

<id property="name" column="name"/>
<collection property="ids" ofType="Integer">
    <result column="id"/>
</collection>

嵌套选择也可以,但它会执行N + 1个查询,可能是a performance issue

答案 1 :(得分:0)

mybatis不知道如何选择id作为id列表。 你可以使用嵌套选择

<collection property="ids" column="name" select="findIdByName" />

<select id="findIdByName" resultType="int">
        SELECT id
        FROM mapping where name = #{name}
    </select>