第一种方法
try {
commonDao.insert(sql);
} catch (Exception e) {
if(e instanceof DuplicateKeyException){
logger.warn(sql+"已经存在于["+dataSource+"]无需重复插入");
return ;
}else{
logger.error("插入数据库["+dataSource+"]数据失败");
throw e;
}
第二种方法
使用INSERT IGNORE INTO tableName (字段) VALUES (值)
MySQL插入会直接忽略重复的值,但是需要确保sql语句没有问题,否则依旧会报错
一定要有主键或唯一索引,否则和INSERT INTO没有区别.
注意:
当数据转换引发报错时,可以通过IGNORE关键字来忽略错误,这时MySQL会产生警告而不退出语句的执行,无效的数值会被调整成接近的数值并被插入。
例:如果表中rid字段 NOT NULL ,使用INSERT IGNORE 会忽略此类错误, 最终插入0.