MyBatis + MySQL返回插入成功後的主鍵id

涵s發表於2018-01-18

這是最近在實現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,關於這兩個引數,官方文件解釋如下:
mybatis

測試

測試用例如下:

    @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());
    }

結果如下:
result

mysql中表的記錄如下:
mysql

結語

首發於我的個人部落格,新的專案演示地址:perfect-ssm,登入賬號:admin,密碼:123456
MyBatis + MySQL返回插入成功後的主鍵id
如果有問題或者有一些好的創意,歡迎給我留言,也感謝向我指出專案中存在問題的朋友。

如果你想繼續瞭解該專案可以檢視整個系列文章Spring+SpringMVC+MyBatis+easyUI整合系列文章,也可以到我的GitHub倉庫或者開源中國程式碼倉庫中檢視原始碼及專案文件。

相關文章