国产探花免费观看_亚洲丰满少妇自慰呻吟_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了


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 连平县| 蕉岭县| 师宗县| 和平县| 抚州市| 平陆县| 铅山县| 甘南县| 东方市| 东台市| 通海县| 泗阳县| 黄梅县| 丹寨县| 克东县| 汝州市| 石林| 东丰县| 宁海县| 荥阳市| 年辖:市辖区| 科技| 东阳市| 尤溪县| 德惠市| 凌海市| 双城市| 三江| 望谟县| 上饶县| 江达县| 边坝县| 侯马市| 潮安县| 霍州市| 龙胜| 江川县| 辰溪县| 兴安盟| 介休市| 阿拉尔市|