jdbctemplate batchupdate异常不返回BatchUpdateException

我看见佛 2017-09-25 04:07:50
jdbctemplate batchupdate异常不返回BatchUpdateException,只返回了SQLException;
另外,怎么让batchUpdate其中一条出错后,继续执行后面的数据呢?
		SqlParameterSource[] batch = SqlParameterSourceUtils.createBatch(list.toArray());
try {
int[] affectedRows = namedParameterJdbcTemplate.batchUpdate(SQL, batch);

} catch (Exception e) {
if (e instanceof BatchUpdateException)
logger.info("SSDSDSDSD");
logger.error("",e);


}

...全文
890 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
okkk 2017-09-27
  • 打赏
  • 举报
回复
update前,进行数据检验。 想侧重数据库,可以使用存储过程,逐条检验,根据不同的错误使用不同的处理方法: 主键重复,可以二次update[也可以直接报错,回滚],字段过长,一般数据库会自动截断。
Freefish1994 2017-09-25
  • 打赏
  • 举报
回复
引用 3 楼 case5166 的回复:
引用 2 楼 qq_27762917 的回复:
你既然想要批量插入,就得保证这50条sql是正确的,批量插入都是一起提交一起回滚的
BatchUpdateException他不报这个异常呀。另外比如字段设置过长。主键重复这些怎么避免呀。
我觉得主键的重复应该在插入这条记录之前就根据主键对数据库进行查询 看看要插入的这条记录的主键数据库中是否存在 如果不存在再插入 如果存在就应该更新这条记录 字段设置的过长应该在前端页面上用validate插件或者别的插件对用户输入的信息进行长度的校验,而不是依靠try catch捕获异常来处理
我看见佛 2017-09-25
  • 打赏
  • 举报
回复
引用 2 楼 qq_27762917 的回复:
你既然想要批量插入,就得保证这50条sql是正确的,批量插入都是一起提交一起回滚的
BatchUpdateException他不报这个异常呀。另外比如字段设置过长。主键重复这些怎么避免呀。
  • 打赏
  • 举报
回复
try{ //批量插入 } catch(Exception ex){ //改为逐条插入 }
Freefish1994 2017-09-25
  • 打赏
  • 举报
回复
你既然想要批量插入,就得保证这50条sql是正确的,批量插入都是一起提交一起回滚的

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧