java - 請問mybatis新增操作使用UUID 如何返回UUID
問題描述
問題解答
回答1:調(diào)用持久層前,自己生成一個UUID,放到對象里并且方法返回該UUID。
回答2:dao接口定義 save 方法 時 嘗試 修改返回類型 為String 看看有沒有接收到。默認(rèn)是返回影響行數(shù)的。如果配置了selectKey 可能會返回 selectKey的內(nèi)容 。
在使用MyBatis做持久層時,insert語句默認(rèn)是不返回記錄的主鍵值,而是返回插入的記錄條數(shù);如果業(yè)務(wù)層需要得到記錄的主鍵時,可以通過配置的方式來完成這個功能
針對Sequence主鍵而言,在執(zhí)行insert sql前必須指定一個主鍵值給要插入的記錄,如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ù)庫,uuid可以寫sys_guid()
如果是mysql的就要跟樓上說的一樣,先給一個id再保存
回答4:不用在代碼中提前生成一個uuid,理解一下selectKey 中keyProperty屬性就可以解決這個問題。
這樣在selectKey生成時,產(chǎn)生的UUID會set進(jìn)當(dāng)前對象中
相關(guān)文章:
1. docker-machine添加一個已有的docker主機問題2. angular.js - angularjs的自定義過濾器如何給文字加顏色?3. mac里的docker如何命令行開啟呢?4. 關(guān)于docker下的nginx壓力測試5. docker - 如何修改運行中容器的配置6. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.7. 用redis開發(fā)留言板,用戶名和密碼或者留言列表應(yīng)該用單獨的key來存儲嗎?8. java - 安卓實現(xiàn)熄屏功能。9. java - bootstrap table分頁以后,下面的分頁按鈕消失怎么辦并且如何返回總頁數(shù)10. phpstorm 沒有安裝Emmet怎么還有Emmet的相關(guān)功能啊
