JdbcTemplate.update () вставить возвращаемые значения

JdbcTemplate.update() возвращает количество затронутых строк - таким образом, вы не только знаете, что удаление/обновление было успешным, вы также знаете, сколько строк было удалено/обновлено.

каким будет возвращаемое значение, если я попытаюсь вставить строку.

можно ли получить возвращаемое значение как "0"??

 private static final String insertSql =
 "INSERT INTO employee (" +
 " name, " +
 " surname, " +
 " title, " +
 " created) " +
 "VALUES (John, Smith, Software developer, new Date())";
 int row = template.update(insertSql, params, types);

3 ответов


Да, теоретически вы должны получить 0 или 1, но если строка не была вставлена, это будет связано с ошибкой, поэтому DataAccessException будет брошен, и таким образом вы узнаете, что что-то пошло не так, и строка не была создана.


jdbctemplate.update вернется в целочисленном формате, как мы знаем. чтобы найти 0 или 1, просто сделайте это ниже простого кода

int i=jdbctemplate.update(.your db call..);

он вернет 1 для успеха и 0 для случая отказа, поэтому, согласно ему, вы можете обработать свою логику.


чтобы ответить на ваш вопрос, да, как указал @Turophile, вы получите 0 или 1 в ответ, как вы можете сказать из сигнатуру метода (который возвращает int).

в ответ на @Turophile комментарий (извините, я не могу добавить комментарий :/ ), чтобы избежать этого и избежать частичного сохранения данных в базе данных, используйте Springs Transaction Management (tx). Это позволит вам откатывать транзакции на основе определенных исключений или всех исключений из Класс исключений. Имейте в виду, по умолчанию @Rollback откатывает транзакции для выполнения, непроверенные исключения только.

@Transactional(rollbackFor = Exception.class)
public Employee updateEmployee(Employee pEmployee) { ... }

@Transactional также может быть добавлен в класс, но я бы подробнее об этом Если вы заинтересованы в реализации этой функции. Есть много хорошей документации по ТХ.

в качестве примечания я не рекомендую лгать вызывающему объекту вашего метода. Если вы вызываете метод, который говорит "update", запустите запрос это обновит запись, если вы хотите вставить / создать новую запись, создать или вызвать метод, который "вставляет" новую запись в вашу таблицу-вставка повторяющейся записи не будет работать в любом случае, если первичный ключ(ы) уникален.