java - 請(qǐng)問(wèn)mybatis新增操作使用UUID 如何返回UUID
問(wèn)題描述
問(wèn)題解答
回答1:調(diào)用持久層前,自己生成一個(gè)UUID,放到對(duì)象里并且方法返回該UUID。
回答2:dao接口定義 save 方法 時(shí) 嘗試 修改返回類(lèi)型 為String 看看有沒(méi)有接收到。默認(rèn)是返回影響行數(shù)的。如果配置了selectKey 可能會(huì)返回 selectKey的內(nèi)容 。
在使用MyBatis做持久層時(shí),insert語(yǔ)句默認(rèn)是不返回記錄的主鍵值,而是返回插入的記錄條數(shù);如果業(yè)務(wù)層需要得到記錄的主鍵時(shí),可以通過(guò)配置的方式來(lái)完成這個(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要另外寫(xiě)。如果是oracle的數(shù)據(jù)庫(kù),uuid可以寫(xiě)sys_guid()
如果是mysql的就要跟樓上說(shuō)的一樣,先給一個(gè)id再保存
回答4:不用在代碼中提前生成一個(gè)uuid,理解一下selectKey 中keyProperty屬性就可以解決這個(gè)問(wèn)題。
這樣在selectKey生成時(shí),產(chǎn)生的UUID會(huì)set進(jìn)當(dāng)前對(duì)象中
相關(guān)文章:
1. python文檔怎么查看?2. python - pycharm 自動(dòng)刪除行尾空格3. 安全性測(cè)試 - nodejs中如何防m(xù)ySQL注入4. python - pandas按照列A和列B分組,將列C求平均數(shù),怎樣才能生成一個(gè)列A,B,C的dataframe5. python - Pycharm的Debug用不了6. html - eclipse 標(biāo)簽錯(cuò)誤7. python 利用subprocess庫(kù)調(diào)用mplayer時(shí)發(fā)生錯(cuò)誤8. 請(qǐng)問(wèn)PHPstudy中的數(shù)據(jù)庫(kù)如何創(chuàng)建索引9. datetime - Python如何獲取當(dāng)前時(shí)間10. javascript - 有適合開(kāi)發(fā)手機(jī)端Html5網(wǎng)頁(yè)小游戲的前端框架嗎?
