Java JdbcTemplate.update()插入返回值

Java JdbcTemplate.update()插入返回值,java,spring-mvc,db2,spring-jdbc,jdbctemplate,Java,Spring Mvc,Db2,Spring Jdbc,Jdbctemplate,JdbcTemplate.update()返回受影响的行数-这样您不仅知道删除/更新成功,还知道删除/更新了多少行 如果我尝试插入一行,返回值是多少 是否可以将返回值设置为“0” 是的,理论上你应该得到0或1,但如果没有插入任何行,这将是由于一个错误,因此会抛出一个DataAccessException,这样你就知道发生了错误,没有创建任何行。要回答你的问题,是的,正如@turphile所指出的,您将得到0或1作为响应,这可以从中看出(返回int) 为了响应@Turophile(很抱歉,我无法添

JdbcTemplate.update()
返回受影响的行数-这样您不仅知道删除/更新成功,还知道删除/更新了多少行

如果我尝试插入一行,返回值是多少

是否可以将返回值设置为“0”


是的,理论上你应该得到0或1,但如果没有插入任何行,这将是由于一个错误,因此会抛出一个
DataAccessException
,这样你就知道发生了错误,没有创建任何行。

要回答你的问题,是的,正如@turphile所指出的,您将得到0或1作为响应,这可以从中看出(返回int)

为了响应@Turophile(很抱歉,我无法添加注释:/),为了避免这种情况并避免将部分数据保存到数据库中,请使用Springs事务管理(tx)。这将允许您基于特定异常或Exception类中的所有异常回滚事务。请注意,默认情况下,@Rollback为运行时回滚事务,未检查的异常仅

@Transactional(rollbackFor = Exception.class)
public Employee updateEmployee(Employee pEmployee) { ... }
@Transactional也可以添加到类中,但如果您对实现此功能感兴趣,我会这样做。有很多关于tx的好文档


作为补充,我不建议对方法的调用方撒谎。如果调用一个显示“update”的方法,则运行一个将更新记录的查询;如果要插入/创建新记录,则创建或调用一个将新记录“插入”到表中的方法——如果主键是唯一的,则插入重复记录无论如何都不起作用。

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

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

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

事实上,仔细想想,还有一种情况是,您有一个数据截断警告,并引发异常,但行将被保存,因此计数应为1。
int i=jdbctemplate.update(.your db call..);