伪代码:
Person personFromDb = personMapper.selectPerson(person.getUserId);
if(personFromDb == null){
int rst = personMapper.insertIgnore(person);
if(rst > 0){
return;
}
}
//没有新增,则更新
personMapper.update(person);
这里我们也可以try-catch,try语句块正常,直接return,catch异常说明新增失败,打下log,继续后续更新逻辑
但这样一来影响代码美观,而且会有一定性能影响,所以还是insert igonre
更好点
@Insert("insert igonre into person(user_id,score) value(#{userId},#{score})")
@Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id")
int insertIgonre(Person person);
insert igonre
可以忽略新增带来的错误
例子
insert into code values(1,’china’,’nanjing’,’86’,’25’);
如果再执行一遍
insert into code values(1,’china’,’nanjing’,’86’,’25’);
则会报如下错误:ERROR 1062 (23000): Duplicate entry ‘1’ for key 1
此时如果加上ignore关键字,则就不会报错:
insert ignore into code values(1,’china1′, ‘nanjing1′,’0086′,’025’);
执行结果:Query OK, 0 rows affected (0.00 sec)
转载请注明:汪明鑫的个人博客 » insert ignore
说点什么
您将是第一位评论人!