ringa_lee
呼叫持久層前,自己產生一個UUID,放到物件裡並且方法傳回該UUID。
dao介面定義 save 方法 時 嘗試 修改回傳類型 為String 看看有沒有接收到。 預設是傳回影響行數的。如果配置了selectKey 可能會傳回 selectKey的內容 。
在使用MyBatis做持久層時,insert語句預設是不傳回記錄的主鍵值,而是傳回插入的記錄條數;如果業務層需要得到記錄的主鍵時,可以透過設定的方式來完成這個功能
針對Sequence主鍵而言,在執行insert sql前必須指定一個主鍵值給要插入的記錄,如Oracle、DB2,可以採用以下配置方式:
<insert id="add" 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>
mybatis預設回傳的是影響的行數,要回傳id要另外寫。 如果是oracle的資料庫,uuid可以寫sys_guid()
如果是mysql的就要跟樓上說的一樣,先給一個id再保存
不用在程式碼中提前產生一個uuid,理解一下selectKey 中keyProperty屬性就可以解決這個問題。
這樣在selectKey產生時,產生的UUID會set進目前物件中
呼叫持久層前,自己產生一個UUID,放到物件裡並且方法傳回該UUID。
dao介面定義 save 方法 時 嘗試 修改回傳類型 為String 看看有沒有接收到。
預設是傳回影響行數的。如果配置了selectKey 可能會傳回 selectKey的內容 。
在使用MyBatis做持久層時,insert語句預設是不傳回記錄的主鍵值,而是傳回插入的記錄條數;如果業務層需要得到記錄的主鍵時,可以透過設定的方式來完成這個功能
針對Sequence主鍵而言,在執行insert sql前必須指定一個主鍵值給要插入的記錄,如Oracle、DB2,可以採用以下配置方式:
mybatis預設回傳的是影響的行數,要回傳id要另外寫。
如果是oracle的資料庫,uuid可以寫sys_guid()
如果是mysql的就要跟樓上說的一樣,先給一個id再保存
不用在程式碼中提前產生一個uuid,理解一下selectKey 中keyProperty屬性就可以解決這個問題。
這樣在selectKey產生時,產生的UUID會set進目前物件中