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


這是最近在實現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

如果有問題或者有一些好的創意,歡迎給我留言,也感謝向我指出項目中存在問題的朋友。

如果你想繼續了解該項目可以查看整個系列文章Spring+SpringMVC+MyBatis+easyUI整合系列文章,也可以到我的GitHub倉庫或者開源中國代碼倉庫中查看源碼及項目文檔。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM