1. 程式人生 > >mybatis插入記錄後獲得主鍵id

mybatis插入記錄後獲得主鍵id

今天做練習的時候發現了mybatis的一個坑

在進行插入操作後,我們需要獲得新插入記錄的主鍵id,一般來說有兩種方法

<insert id="insertBlog" keyProperty="blogId" useGeneratedKeys="true" parameterType="com.*.Blog">
	insert into s_blog (user_id, title, summary, content, draft_status, create_time, update_time) 
			values(#{userId}, #{title}, #{summary}, #{content}, #{draftStatus}, current_timestamp, current_timestamp)
</insert>

或者

<insert id="insertUser" parameterType="com.*.Blog">
	<selectKey resultType="int" order="AFTER" keyProperty="userId">
	            select last_insert_id() as userId
	 </selectKey>
	insert into user(email,password,activation_code,join_time,username,avatar_url)
	        values(#{email},#{password},#{activationCode},#{joinTime},#{username},#{avatarUrl})
</insert>
第一種方法是利用jdbc的getGeneratedKeys方法,這種方式需要資料庫支援主鍵自增,如mysql

像oracle這種不支援自增的可以使用第二種方式

那麼問題來了,在我每次獲得sql的返回值時得到的都是1,這個明顯就是這條sql所影響的行數,

後來我發現要取得主鍵,不是直接獲得sql的返回值,而是去實體類中取, 如blog.getBlogId().