mysql-mybatis 执行 INSERT … ON DUPLICATE KEY UPDATE

问题描述

mybatis 执行 INSERT … ON DUPLICATE KEY UPDATE
mybatis 在执行 INSERT … ON DUPLICATE KEY UPDATE 格式的语句的时候
没有报错,库表也没插入数据,数据库是mysql
用mysql客户端执行这条语句的时候却是能插入的
是因为myBatis不支持吗?
语句示例:
INSERT INTO test
(main_idscoretotalCount)
VALUES
(1235.012345)
ON DUPLICATE KEY UPDATE
score=VALUES(score)
totalCount=VALUES(totalCount)
main_id是主键以上语在mysql客户端执行能正确插入或更新

<insert id=""insertOrUpdate"" parameterType=""这里就不写了"">    INSERT INTO test    (main_idscoretotalCount)    VALUES    (4565.012345) <!--这里有个参数是456,同上面一条的123不一样-->    ON DUPLICATE KEY UPDATE    score=VALUES(score)    totalCount=VALUES(totalCount)</insert>

这是mybatis里面执行的语句,为了直观些,我直接写了一条死语句进来。
同样的两条语句在mybatis里面执行的时候也不报错,但是数据库却插不进去,也不能更新

求解!

解决方案

没有调用commit()吧。。。
session.commit();

时间: 2024-10-29 01:44:21

mysql-mybatis 执行 INSERT … ON DUPLICATE KEY UPDATE的相关文章

INSERT ... ON DUPLICATE KEY UPDATE Syntax

一 mybatis中返回自动生成的id 当有时我们插入一条数据时,由于id很可能是自动生成的,如果我们想要返回这条刚插入的id怎么办呢.在mysql数据中我们可以在insert下添加一个selectKey用以指定返回的类型和值 <insert id="xxx" parammeterType="xxx"> <selectKey resultType="java.lang.Integer" order="AFTER&quo

MYSQL的REPLACE和ON DUPLICATE KEY UPDATE语句介绍解决问题实例_Mysql

在对看看的后台进行排序的时候,遇到了一个像这样的需求,在电影表中有ID(主键自增)和orderby(排序字段) ,假设有十条数据id分别从1-10之间,对应的orderby也是从1-10之间,我现在想把id=9的数据移动到第三的位置(id=3)的这个位置,并且保证之前的数据排列顺序(即id=3的orderby=4,id=4的orderby=5-id=8的orderby=9),这样如果用循环的形式是可以解决数据的问题,但是这样操作数据库过程太多,现在就想用一条sql语句来解决这个问题. 下面来看看

“INSERT ON DUPLICATE KEY UPDATE”更新部分字段

之前的wormhole(我们开发的大规模批量数据传导工具,类似apache的sqoop,淘宝的datax)的mysql writer支持insert into 和 replace into两种方式入mysql表. 现在有需求要支持update部分字段操作,比如计算完的一堆商户ID(ShopID)和对应PageView总数(ViewTotal),需要更新到一张多字段的Shop表对应字段中(ShopID是主键),如果还是用insert into会抛duplicated key exception ,

mysql中INSERT INTO… ON DUPLICATE KEY UPDATE用法

MySQL 自4.1版以后开始支持INSERT - ON DUPLICATE KEY UPDATE语法,使得原本需要执行3条SQL语句(SELECT,INSERT,UPDATE),缩减为1条语句即可完成. 例如ipstats表结构如下:  代码如下 复制代码 CREATE TABLE ipstats ( ip VARCHAR(15) NOT NULL UNIQUE, clicks SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0' ); 原本需要执行3条SQL语句

mysql ON DUPLICATE KEY UPDATE语句示例_Mysql

MySQL 自4.1版以后开始支持INSERT - ON DUPLICATE KEY UPDATE语法,使得原本需要执行3条SQL语句(SELECT,INSERT,UPDATE),缩减为1条语句即可完成.例如ipstats表结构如下: 复制代码 代码如下: CREATE TABLE ipstats (ip VARCHAR(15) NOT NULL UNIQUE,clicks SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0');  原本需要执行3条SQL语句,如下

mysql insert的几点操作(DELAYED,IGNORE,ON DUPLICATE KEY UPDATE )_Mysql

INSERT语法 INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ] 或: INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INT

MySQL的Replace into 与Insert into on duplicate key update真

看下面的例子吧: 1 Replace into ... 1.1 录入原始数据 mysql> use test; Database changed mysql> mysql> CREATE TABLE t1 SELECT 1 AS a, 'c3' AS b, 'c2' AS c; ALTER TABLE t1 CHANGE a a INT PRIMARY KEY AUTO_INCREMENT ; Query OK, 1 row affected (0.03 sec) Records: 1 

深入mysql &quot;ON DUPLICATE KEY UPDATE&quot; 语法的分析

mysql "ON DUPLICATE KEY UPDATE" 语法如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE:如果不会导致唯一值列重复的问题,则插入新行. 例如,如果列 a 为 主键 或 拥有UNIQUE索引,并且包含值1,则以下两个语句具有相同的效果: 复制代码 代码如下: INSERT INTO TABLE (a,c) VALUES

深入mysql “ON DUPLICATE KEY UPDATE” 语法的分析

mysql "ON DUPLICATE KEY UPDATE" 语法 如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE:如果不会导致唯一值列重复的问题,则插入新行. 例如,如果列 a 为 主键 或 拥有UNIQUE索引,并且包含值1,则以下两个语句具有相同的效果: INSERT INTO TABLE (a,c) VALUES (1,3) ON