abel533 / Mybatis-Spring

这是一个集成了Mybatis分页插件和通用Mapper的示例项目
941 stars 610 forks source link

能不能加个方法,有数据的时候就更新,没有的时候就插入,好像特别实用的 #21

Open shenzhuan opened 7 years ago

shenzhuan commented 7 years ago

能不能加个方法,有数据的时候就更新,没有的时候就插入,好像特别实用的

abel533 commented 7 years ago

Service层封装即可。

shenzhuan commented 7 years ago

mysql 存在更新 不存在插入 2010-06-12 18:17:02 分类: Mysql/postgreSQL 看程序竟然发现Mysql有这个功能! 今天写程序,新发现……………………,相当不错^_^,省略了很多功夫,每天1G多的日志!! MySQL 自4.1版以后开始支持INSERT … ON DUPLICATE KEY UPDATE语法,使得原本需要执行3条SQL语句(SELECT,INSERT,UPDATE),缩减为1条语句即可完成。 INSERT ... ON DUPLICATE KEY UPDATE,当插入的记录会引发主键冲突或者违反唯一约束时,则使用UPDATE更新旧的记录,否则插入新记录。 例如ipstats表结构如下: CREATE TABLE ipstats ( ip VARCHAR(15) NOT NULL UNIQUE, clicks SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0' ); 原本需要执行3条SQL语句,如下: IF (SELECT * FROM ipstats WHERE ip='192.168.0.1') { UPDATE ipstats SET clicks=clicks+1 WHERE ip='192.168.0.1'; } else { INSERT INTO ipstats (ip, clicks) VALUES ('192.168.0.1', 1); } 而现在只需下面1条SQL语句即可完成: INSERT INTO ipstats VALUES('192.168.0.1', 1) ON DUPLICATE KEY UPDATE clicks=clicks+1; 注意,要使用这条语句,前提条件是这个表必须有一个唯一索引或主键。