mybatis插入語句執行後返回結果
第一種方法:
<!-- ***************重點掌握插入語句返回結果的做法**************** -->
<insert id="insertUser" parameterType="cn.com.gjw.pojo.User"><!-- 將插入資料的主鍵返回,由SELECT LAST_INSERT_ID()得到,只適用於自增主鍵
keyProperty:指定將查詢到的結果返回到parameterType所指的物件的對應屬性中
order:指的是執行順序,即為AFTER時,則在insert語句執行之後執行。
-->
<selectKey keyProperty="id" order="AFTER" resultType="int">
SELECT LAST_INSERT_ID()
</selectKey>
insert into user(userName, sex, address, birthday) values(#{userName}, #{sex}, #{address}, #{birthday})
</insert>
第二種方法:
<insert id="insertUser" parameterType="cn.com.gjw.pojo.User" useGeneratedKeys="true" keyProperty="id">
insert into user(userName, sex, address, birthday) values(#{userName}, #{sex}, #{address}, #{birthday})
</insert>
第三種方法:如果id不是自增的,當表中沒有記錄式,設定id值為1,否則取id的最大值加2作為新的主鍵,設定方式為:
<insert id="insertUser" parameterType="cn.com.gjw.pojo.User" useGeneratedKeys="true" keyProperty="id">
<selectKey keyProperty="id" order="BEFORE" resultType="int">
select if(max(id) is null, 1, max(id) + 2) as newId from user
</selectKey>
insert into user(userName, sex, address, birthday) values(#{userName}, #{sex}, #{address}, #{birthday})
</insert>
程式碼中,執行完插入操作後可以列印測試是否取到了剛插入的記錄的id:
System.out.println(user.getId());