java - 請(qǐng)問mybatis新增操作使用UUID 如何返回UUID
問題描述
問題解答
回答1:調(diào)用持久層前,自己生成一個(gè)UUID,放到對(duì)象里并且方法返回該UUID。
回答2:dao接口定義 save 方法 時(shí) 嘗試 修改返回類型 為String 看看有沒有接收到。默認(rèn)是返回影響行數(shù)的。如果配置了selectKey 可能會(huì)返回 selectKey的內(nèi)容 。
在使用MyBatis做持久層時(shí),insert語句默認(rèn)是不返回記錄的主鍵值,而是返回插入的記錄條數(shù);如果業(yè)務(wù)層需要得到記錄的主鍵時(shí),可以通過配置的方式來完成這個(gè)功能
針對(duì)Sequence主鍵而言,在執(zhí)行insert sql前必須指定一個(gè)主鍵值給要插入的記錄,如Oracle、DB2,可以采用如下配置方式:
<insert parameterType='vo.Category'><selectKey resultType='java.lang.Short' order='BEFORE' keyProperty='id'>SELECT SEQ_TEST.NEXTVAL FROM DUAL</selectKey>insert into category (name_zh, parent_id,show_order, delete_status, description)values (#{nameZh,jdbcType=VARCHAR},#{parentId,jdbcType=SMALLINT},#{showOrder,jdbcType=SMALLINT},#{deleteStatus,jdbcType=BIT},#{description,jdbcType=VARCHAR})</insert>回答3:
mybatis默認(rèn)返回的是影響的行數(shù),要返回id要另外寫。如果是oracle的數(shù)據(jù)庫(kù),uuid可以寫sys_guid()
如果是mysql的就要跟樓上說的一樣,先給一個(gè)id再保存
回答4:不用在代碼中提前生成一個(gè)uuid,理解一下selectKey 中keyProperty屬性就可以解決這個(gè)問題。
這樣在selectKey生成時(shí),產(chǎn)生的UUID會(huì)set進(jìn)當(dāng)前對(duì)象中
相關(guān)文章:
1. html5 - 有可以一次性把所有 css外部樣式轉(zhuǎn)為html標(biāo)簽內(nèi)style=" "的方法嗎?2. javascript - 求解答:實(shí)例對(duì)象調(diào)用constructor,此時(shí)constructor內(nèi)的this的指向?3. javascript - 如何將一個(gè)div始終固定在某個(gè)位置;無論屏幕和分辨率怎么變化;div位置始終不變4. javascript - 這不是對(duì)象字面量函數(shù)嗎?為什么要new初始化?5. javascript - vscode alt+shift+f 格式化js代碼,通不過eslint的代碼風(fēng)格檢查怎么辦。。。6. html - vue項(xiàng)目中用到了elementUI問題7. javascript - 有什么比較好的網(wǎng)頁(yè)版shell前端組件?8. javascript - iframe 為什么加載網(wǎng)頁(yè)的時(shí)候滾動(dòng)條這樣顯示?9. javascript - [js]為什么畫布里不出現(xiàn)圖片呢?在線等10. javascript - 原生canvas中如何獲取到觸摸事件的canvas內(nèi)坐標(biāo)?
