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", запустите запрос это обновит запись, если вы хотите вставить / создать новую запись, создать или вызвать метод, который "вставляет" новую запись в вашу таблицу-вставка повторяющейся записи не будет работать в любом случае, если первичный ключ(ы) уникален.