Почему MyBatis не распознает Arrays.asList ()? - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть следующий код SQL, написанный в MyBatis:

    <select id="getItems" resultMap="someMap">
        SELECT *
        FROM my_table
        WHERE item_id = #{itemID}
        AND source_id IN
        <foreach item="sourceID" index="index" collection="sourceIDList"
            open="(" separator="," close=")">
              #{sourceID}
        </foreach>
    </select>

Соответствующий класс сопоставления в Java:

public interface ItemMapper
{
    List<ItemDO> getItems(
        @Param("itemID") String itemID,
        @Param("sourceIDList") List<String> sourceIDList);
}

Теперь в классе вызывающего, еслиЯ создаю список с помощью Arrays.asList (), MyBatis не может правильно отобразить параметры (хотя исключение не выдается) :

List<String> sourceIDList = Arrays.asList("US", "UK");

Но, если я 'm создав список через Constructor, все работает нормально:

List<String> sourceIDList = new ArrayList<>();
sourceIDList.add("US");
sourceIDList.add("UK");

В журналах, которые я вижу для случая Array.asList ():

Parameters: Item1(String), US, UK(String)

Принимая во внимание,во втором случае это выглядит так:

Parameters: Item1(String), US(String), UK(String)

Я знаю, что соответствующий объект, созданный Arrays.asList(), не относится к классу java.util.ArrayList.Но мне любопытно, почему MyBatis хочет именно этот формат?

...