Как использовать @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);

Я хотел бы вернуть int числа затронутых строк. Поэтому я изучил @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: исключение при привязке.

Можно ли как-нибудь вернуть int из числа затронутых строк?

1 ответ

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

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

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

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

Другие вопросы по тегам