Как использовать @SQLUpdate в JDBI для получения списка строк в качестве параметра?

У меня есть оператор SQL, который нужно выполнить несколько раз со списком, и прямо сейчас я использую для этого @SQLBATCH.

@SqlBatch("INSERT INTO table (name, id) values (:names, :id)")
public abstract void addName(
    @Bind("names") List<String> names,
    @Bind("id") long id);

Я хотел бы вернуть целое число затронутых строк. Итак, я заглянул в @SQLUpdate, но похоже, что @SQLUpdate не принимает список в качестве параметра.

@SqlUpdate("INSERT INTO table (name, id) values (:names, :id)")
public abstract int addName(
    @Bind("names") List<String> names,
    @Bind("id") long id);

Я получаю эту ошибку: UnableToCreateStatementException: Исключение при привязке.

Есть ли способ вернуть целое число затронутых строк?


person user6800688    schedule 08.02.2018    source источник
comment
stackoverflow .com/questions/32526233/   -  person André Barbosa    schedule 08.02.2018


Ответы (1)


Я не думаю, что вы можете использовать @Update таким образом.

Возможно, вы могли бы использовать @BindIn каким-то образом, которого я не вижу, но это в основном для создания in-условий, таких как id in ('a', 'b', 'c', 'd').

Также я не думаю, что вам это нужно, потому что количество элементов в вашем параметре имен уже дает вам количество вставок, которые выполняет @SqlBatch.

Таким образом, в вызывающем коде вы можете просто использовать name.size(), чтобы получить количество выполненных вставок.

person martinw    schedule 08.02.2018