1. 程式人生 > >MyBatis與IBatis插入返回主鍵

MyBatis與IBatis插入返回主鍵

一、MyBatis插入返回主鍵

在使用MyBatis做持久層時,insert語句預設是不返回記錄的主鍵值,而是返回插入的記錄條數;如果業務層需要得到記錄的主鍵時,可以通過配置的方式來完成這個功能。 
針對Sequence主鍵而言,在執行insert sql前必須指定一個主鍵值給要插入的記錄,如Oracle、DB2,可以採用如下配置方式:

<insert id="addOracle" parameterType="Student">
		<selectKey resultType="java.lang.Integer" order="BEFORE" keyProperty="id">  
			select seq_t_student .nextval from dual  
		</selectKey> 
		insert into t_student(id,name)
		values(#{id},#{name})
</insert>
	
針對自增主鍵的表,在插入時不需要主鍵,而是在插入過程自動獲取一個自增的主鍵,比如MySQL,可以採用如下兩種配置方式:

1.返回主鍵方式

<insert id="add" parameterType="Student">
		<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">  
			SELECT LAST_INSERT_ID() AS id  
		</selectKey>  
		
		insert into t_student(name)
		values(#{name})
</insert>
2.設定useGeneratedKeys="true"屬性方式
<insert id="add1" parameterType="Student"  useGeneratedKeys="true" keyProperty="id">  
		insert into t_student(name)
		values(#{name})
</insert>
說明:本人於ITEYE創建於2014年,現轉移到CSDN