java - 請問mybatis新增操作使用UUID 如何返回UUID
問題描述
問題解答
回答1:調用持久層前,自己生成一個UUID,放到對象里并且方法返回該UUID。
回答2:dao接口定義 save 方法 時 嘗試 修改返回類型 為String 看看有沒有接收到。默認是返回影響行數的。如果配置了selectKey 可能會返回 selectKey的內容 。
在使用MyBatis做持久層時,insert語句默認是不返回記錄的主鍵值,而是返回插入的記錄條數;如果業務層需要得到記錄的主鍵時,可以通過配置的方式來完成這個功能
針對Sequence主鍵而言,在執行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默認返回的是影響的行數,要返回id要另外寫。如果是oracle的數據庫,uuid可以寫sys_guid()
如果是mysql的就要跟樓上說的一樣,先給一個id再保存
回答4:不用在代碼中提前生成一個uuid,理解一下selectKey 中keyProperty屬性就可以解決這個問題。
這樣在selectKey生成時,產生的UUID會set進當前對象中
相關文章:
1. java - public <T> T findOne(T record) 這是什么意思2. css - 關于ul的布局3. javascript - 前端開發 本地靜態文件頻繁修改,預覽時的緩存怎么解決?4. android - 優酷的安卓及蘋果app還在使用flash技術嗎?5. docker不顯示端口映射呢?6. mysql數據庫每次查詢是一條線程嗎?7. python - linux怎么在每天的凌晨2點執行一次這個log.py文件8. javascript - 我的站點貌似被別人克隆了, google 搜索特定文章,除了域名不一樣,其他的都一樣,如何解決?9. 如何分別在Windows下用Winform項模板+C#,在MacOSX下用Cocos Application項目模板+Objective-C實現一個制作游戲的空的黑窗口?10. 小程序怎么加外鏈,語句怎么寫!求救新手,開文檔沒發現
