mybatis獲取插入數據主鍵

執行操作前提:數據表定義了序列和觸發器(可以不定義觸發器,那樣mybatis的配置便不同)

mybatis配置:

<insert id="insertRecord" parameterType="map">
		<selectKey resultType="int" keyProperty="id" order="AFTER">  
   			SELECT SEQ_CDM_VBIRECORDINFO.CURRVAL FROM DUAL  
        </selectKey>
		insert into CDM_VBIRECORDINFO(USERID, ECOUNT, CREATETIME)
		      values(#{userId,jdbcType=VARCHAR}, #{eCount,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP})
	</insert>
操作:

int recordResult = vbiDao.insert("vbiRecord.insertRecord", recordInfoMap);

傳入的recordInfoMap是一個map,執行該操作,在實際的mybatis中,會執行以後兩步操作:

1.把數據插入表cdm_vbirecordinfo中

2.獲取當前的序列,因爲oracle數據庫配置了觸發器,因此插入成功之後,插入的數據的主鍵ID就是當前的序列值.

這樣,通過<select>的配置,就獲取了之前插入數據的主鍵ID,然後mybatis會將id的值放入傳入的參數map的key爲id的值中,傳入的參數如果是HashMap類型,那麼map中可以沒有key爲id的鍵,mybatis會自動添加一個id的key,並將值put進去。如果傳入的參數是一個具體的對象,則mybatis會通過反射調用改對象的setId方法,將主鍵id的值設置進去,此時,傳入的對象中一定要有id屬性,不然mybatis無法設置主鍵id。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章