Как использовать @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()
чтобы получить количество вставок, которые были выполнены.