史上最简单 MySQL INSERT 有则修改,无则插入 ( 支持批量 )

话不多说,直接上干货

一、建表语句:

CREATE TABLE `tab` (
    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键-id',
    `unique_key` varchar(255) NOT NULL COMMENT '唯一-key',
    `t1` longtext COMMENT '测试 t1',
    `t2` longtext COMMENT '测试 t2',
    `t3` longtext COMMENT '测试 t3',
    `gmt_created` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
    PRIMARY KEY (`id`),
    UNIQUE KEY `unique_key` (`unique_key`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='测试 tab'

史上最简单 MySQL INSERT 有则修改,无则插入 ( 支持批量 )_第1张图片

史上最简单 MySQL INSERT 有则修改,无则插入 ( 支持批量 )_第2张图片

二、Mapper.xml 结构(这个是支持批量操作的):

parameterType 的 List 中存放的是单个 Tab 对象


   INSERT INTO `tab` (
        `unique_key`,
        `t1`,
        `t2`,
        `t3`
    )
    VALUES
    
        (
            #{tab.uniqueKey},
            #{tab.t1},
            #{tab.t2},
            #{tab.t3}
        )
    
    ON DUPLICATE KEY UPDATE
    `t1`=VALUES(`t1`),
    `t2`=VALUES(`t2`),
    `t3`=VALUES(`t3`)

你可能感兴趣的:(史上最简单 MySQL INSERT 有则修改,无则插入 ( 支持批量 ))