原代碼
<insert id="insertArticle" parameterType="Article">
insert into ssm_article(article_title,article_create_date,article_content,add_name)
values(#{articleTitle},#{articleCreateDate},#{articleContent},#{addName})
</insert>
修改后
<insert id="insertArticle" useGeneratedKeys="true" keyProperty="id" parameterType="Article">
insert into ssm_article(article_title,article_create_date,article_content,add_name)
values(#{articleTitle},#{articleCreateDate},#{articleContent},#{addName})
</insert>
在insert中將useGeneratedKeys屬性設(shè)置為true,并制定keyProperty為Article對象的id,關(guān)于這兩個(gè)參數(shù),官方文檔解釋如下:
useGeneratedKeys
允許 JDBC 支持自動(dòng)生成主鍵,需要數(shù)據(jù)庫驅(qū)動(dòng)支持。如果設(shè)置為 true,將強(qiáng)制使用自動(dòng)生成主鍵。盡管一些數(shù)據(jù)庫驅(qū)動(dòng)不支持此特性,但仍可正常工作(如 Derby)。默認(rèn)false
keyProperty
(僅適用于 insert 和 update)指定能夠唯一識別對象的屬性,MyBatis 會(huì)使用 getGeneratedKeys 的返回值或 insert 語句的 selectKey 子元素設(shè)置它的值,默認(rèn)值:未設(shè)置(unset)。如果生成列不止一個(gè),可以用逗號分隔多個(gè)屬性名稱。