db2 jdbcTemplate.update()插入返回值

soat7uwm  于 2022-11-07  发布在  DB2
关注(0)|答案(4)|浏览(189)

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);
bvn4nwqk

bvn4nwqk1#

是的,理论上应该得到0或1,但如果没有插入行,则可能是由于错误,因此将抛出DataAccessException,这就是为什么您会知道出错了,没有创建行。

ohfgkhjo

ohfgkhjo2#

正如我们所知,jdbctemplate.update将以整数格式返回。为了找到0或1,只需执行以下简单代码

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

如果成功,它将返回1,如果失败,它将返回0,因此,根据它,您可以处理您逻辑。

s4n0splo

s4n0splo3#

回答你的问题,是的,正如@Turophile指出的,你会得到一个0或1的响应,这可以从方法签名(返回一个int)中看出。
为了回应@Turophile comment(抱歉我不能添加注解:/),为了避免这种情况并避免部分数据被保存到数据库中,请使用Springs Transaction Management(tx)。这将允许您基于特定异常或Exception类中的所有异常回滚事务。请注意,默认情况下,@Rollback只回滚运行时未检查异常的事务****。

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

@Transactional也可以添加到类中,但是如果你对实现这个特性感兴趣的话,我会read up more on it
顺便说一句,我不建议对方法的调用者撒谎。如果您调用一个写着“update”的方法,运行一个查询来更新记录,如果您想插入/创建一个新记录,创建或调用一个方法来“插入”一个新记录到您的表中--如果主键是唯一的,插入重复的记录无论如何都不会起作用。

moiiocjp

moiiocjp4#

Spring jdbcTemplate类不提供“insert”方法,只提供查询和更新。

相关问题