国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

mybatis中 insert into select 批量生成uuid時 用replace去掉"-"只生成一個uuid

2024-07-21 02:52:15
字體:
來源:轉載
供稿:網友

要復制student里的部分數據,到student表里,用的是 insert into select。。。 開始生成uuid是帶【’-‘】的,可是用replace替換就有問題,只生成一個uuid 把打印出來的sql在MySQL視圖工具里直接執行時沒有問題的,可是就在mybatis里 就出現這樣的問題,而且是同replace一起使用的時候。

mysql數據庫包 mysql-connector-java 版本是5.1.19,此版本會出現這個問題,換成5.1.30版本,沒有問題,如果不想換,可以試試下面的方法

DROP TABLE IF EXISTS `student`;CREATE TABLE `student` ( `id` varchar(32) NOT NULL, `name` varchar(50) DEFAULT NULL, `tid` varchar(32) DEFAULT NULL, PRIMARY KEY (`id`),) Mybatis mapper.xml <insert id="insertCopy"> INSERT INTO name(id,`name`,tid) SELECT UUID(),`name`,#{newtid} FROM student WHERE tid= #{oldtid} </insert>

這種情況生成uuid是帶【‘-’】的,長度為36位,數據庫定義好id是32位 所以就想直接用replace替換掉【‘-’】不就可以了,可是…..

<insert id="insertCopy"> INSERT INTO name(id,`name`,tid) SELECT REPLACE(UUID(),'-',''),`name`,#{newtid} FROM student WHERE tid= #{oldtid} </insert>

報錯: Duplicate entry ‘4534c15dc2a111e6a9ab000ec6c596eb’ for key ‘PRIMARY’,顯然主鍵沖突了, REPLACE (UUID(), ‘-‘, ”) 僅執行了一次,

<insert id="insertCopy"> INSERT INTO name(id,`name`,tid) SELECT REPLACE(temp.tempId,'-',''),`name`,#{newtid} FROM (SELECT UUID() tempId,item.* FROM student stu WHERE tid= #{oldtid}) temp </insert>

報錯: 還是這個問題,怎么辦呢,加個group

<insert id="insertCopy"> INSERT INTO name(id,`name`,tid) SELECT REPLACE(temp.tempId,'-',''),`name`,#{newtid} FROM (SELECT UUID() tempId,item.* FROM student stu WHERE tid= #{oldtid} group by id) temp </insert>

搞定!可以批量生成不同的UUID了


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天门市| 台南市| 双江| 乌拉特前旗| 牙克石市| 昭苏县| 沙田区| 敦煌市| 襄城县| 塔城市| 谢通门县| 温州市| 兴安县| 额敏县| 象州县| 青岛市| 顺昌县| 合肥市| 赞皇县| 科尔| 方城县| 邻水| 安福县| 渭源县| 高尔夫| 汝南县| 建始县| 长沙市| 福鼎市| 巴彦淖尔市| 张家川| 金昌市| 嘉义市| 儋州市| 崇信县| 若尔盖县| 盐边县| 房产| 泰州市| 贵德县| 黄龙县|