1. 程式人生 > >Mybatis插入時返回自增主鍵(selectKey和useGeneratedKeys)

Mybatis插入時返回自增主鍵(selectKey和useGeneratedKeys)

通過selectKey在插入操作前或者操作後獲取key值,做為欄位插入或返回欄位。(此段程式碼獲取的序列值id作為欄位值插入到實體類中返回) 

<insert id="insert">
 <selectKey keyProperty="id" resultType="int" order="AFTER">
  SELECT id FROM myTable
 </selectKey>

 INSERT INTO myTable VALUES(#{id}, #{name})
</insert>

useGeneratedKeys

如果資料庫支援自增長主鍵欄位(比如mysql、sql server)設定useGeneratedKeys=”true”和keyProperty="Id",id 是表的主鍵名,這樣就可以插入主鍵id值 
oracle則不支援自增長id,設定useGeneratedKey=”false”,如果設定true則會有報錯資訊。通過nextval函式,如SEQ_table.Nextval生成id

<insert id="addCover" parameterType="java.util.Map" useGeneratedKeys="true" keyProperty="Id">
 insert into cover(title,path,update_time)
 values(#{title},#{path},#{update_time}) 
</insert> 
int addCover(Map<String,Object> map);