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ù)庫,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. mysql 查詢身份證號(hào)字段值有效的數(shù)據(jù)2. 視頻文件不能播放,怎么辦?3. node.js - nodejs開發(fā)中常用的連接mysql的庫4. python bottle跑起來以后,定時(shí)執(zhí)行的任務(wù)為什么每次都重復(fù)(多)執(zhí)行一次?5. mysql - 把一個(gè)表中的數(shù)據(jù)count更新到另一個(gè)表里?6. 請(qǐng)教使用PDO連接MSSQL數(shù)據(jù)庫插入是亂碼問題?7. mysql - 分庫分表、分區(qū)、讀寫分離 這些都是用在什么場景下 ,會(huì)帶來哪些效率或者其他方面的好處8. python - 爬蟲模擬登錄后,爬取csdn后臺(tái)文章列表遇到的問題9. visual-studio - Python OpenCV: 奇怪的自動(dòng)補(bǔ)全問題10. Python爬蟲如何爬取span和span中間的內(nèi)容并分別存入字典里?
