利用Ibatis实现Mysql中的不重复插入记录
以下讨论全部针对Mysql数据库:)
?
通常业务上至少需要两种类型的不重复插入记录的需求:
?
如果某些关键字段已经在Mysql中存在了,不要重复插入,而是改为更新某些字段。如果某些关键字段已经在Mysql中存在了,不要重复插入,也不需要做更新操作,直接忽略即可。1、针对上面的第一种,mysql提供了insert into ... on duplicate key update ... 语法(Mysql自己的语法,不属于标准SQL)来实现。这种场景相对常见。使用的前提是,需要定义主键或者唯一性索引,用来告诉Mysql哪些字段的重复会造成主键冲突或者违背唯一性约束条件。当这些情况出现时,就放弃insert操作,转而执行后面的update操作。上一个具体的例子,在ibatis中写的一个上面逻辑的sql:
?
?通过上面语句进行插入操作之后,可以通过如下方式在Java代码中获得这个DB自增产生的ID:通过上面语句进行插入操作之后,可以通过如下方式在Java代码中获得insert真正影响到的行数:Integer affectedRows = (Integer)sqlMapClient.update("testInsertIgnore", param);?