一般而言,BatchUpdateException是在批量执行的时候出错,想要知道具体是哪一些数据出错了,这时候就会用到batchUpdateException.getUpdateCounts()方法,根据返回的int型数组来判断。
不过MySQL和Oracle有所区别:
MySQL会将所有的语句全部执行完,然后数组中成功的返回1,失败的返回其它值,比如-3。
Oracle则是一直执行,当遇到第一个失败的语句就会返回,所以会返回均为1的数组。
例子:批量插入10条数据,第3、6条数据失败
MySQL的batchUpdateException.getUpdateCounts()返回:{1,1,-3,1,1,-3,1,1,1,1}
Oracle的batchUpdateException.getUpdateCounts()返回:{1,1}
所以,Oracle若是第一条数据就失败了,就会返回长度为0的数组