我有一個使用自動生成的列生成的表,但我無法使用MyBatis檢索ID。我已經通過測試證明SQL正在工作,並且行正在插入,但我無法獲取生成的ID。使用MyBatis從DB2獲取生成的密鑰
XML配置是:
<insert id="insertRequestTrackingRow" parameterType="map">
INSERT INTO XML_LOG_T (REQ_SRC_SYS_CDE, REQ_USR_ID, REQ_XML_DOC, ROW_CRT_DTM, ROW_UPDT_DTM)
VALUES (#{sourceSystemCode}, #{userID}, #{message}, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
</insert>
在XML_LOG_T是列,REQ_ID,即自動生成的。我的映射器接口:
public interface UdbDataMapper {
int insertRequestTrackingRow(
@Param("message") String message,
@Param("sourceSystemCode") String sourceSystemCode,
@Param("userID") String userID);
}
返回什麼始終是1,我相信這是插入的記錄數。我相信我錯過了一些明顯的東西,但看不到樹木。
是的,我已經看到了文檔中的那些屬性,但他們依靠我的傳遞對象到數據庫中,對不對?我寧願不發明一個對象,只是爲了將數據導入數據庫並重新生成密鑰,但也許這是唯一的方法。 – Mark
生成的鍵值將被插入到您使用的任何參數對象中,只要它具有MyBatis可用於設置該值的設置器即可。請參閱上面我的回覆中的編輯代碼。 –
當你說「只要它有一個setter」,這一切都變得清晰。我實際上改變了我的實現,現在正在傳遞一個對象,但是你的回答非常有幫助。謝謝。 – Mark