這是最近在實現perfect-ssm中的一個功能時碰到的一個小問題,覺得需要記錄一下,向MySQL資料庫中插入一條記錄後,需要獲取此條記錄的id值,以生成對應的key值存入到redis中,id為自增int主鍵。
修改
原始碼為:
<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屬性設定為true,並制定keyProperty為Article物件的id,關於這兩個引數,官方文件解釋如下:
測試
測試用例如下:
@Test
public void insertArticleTest() throws Exception {
Article article = new Article();
article.setArticleContent("article");
article.setAddName("13");
article.setArticleClassID(1);
article.setArticleTitle("title");
article.setArticleCreateDate(DateUtil.getCurrentDateStr());
Assert.assertTrue(article.getId()==null);
System.out.println("insert前article的id:"+article.getId());
//執行insert操作
articleDao.insertArticle(article);
Assert.assertTrue(article.getId()!=null);
System.out.println("insert後article的id:"+article.getId());
}
結果如下:
mysql中表的記錄如下:
結語
首發於我的個人部落格,新的專案演示地址:perfect-ssm,登入賬號:admin,密碼:123456
如果有問題或者有一些好的創意,歡迎給我留言,也感謝向我指出專案中存在問題的朋友。
如果你想繼續瞭解該專案可以檢視整個系列文章Spring+SpringMVC+MyBatis+easyUI整合系列文章,也可以到我的GitHub倉庫或者開源中國程式碼倉庫中檢視原始碼及專案文件。