這是最近在實現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倉庫或者開源中國代碼倉庫中查看源碼及項目文檔。