前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MyBatis + MySQL返回插入成功后的主键id

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

作者头像
程序员十三
发布2018-03-15 15:09:52
3.9K0
发布2018-03-15 15:09:52
举报
文章被收录于专栏:程序员有故事程序员有故事

这是最近在实现perfect-ssm中的一个功能时碰到的一个小问题,觉得需要记录一下,向MySQL数据库中插入一条记录后,需要获取此条记录的id值,以生成对应的key值存入到redis中,id为自增int主键。

修改

原代码为:

代码语言:javascript
复制
 <insert id="insertArticle" parameterType="Article">
insert into ssm_article(article_title,article_create_date,article_content,add_name)
values(#{articleTitle},#{articleCreateDate},#{articleContent},#{addName})
</insert>

这种方式只是返回一个影响行数值,并不能满足此次需求,于是做了如下修改:

代码语言:javascript
复制
 <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
mybatis

测试

测试用例如下:

代码语言:javascript
复制
    @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
result

mysql中表的记录如下:

mysql
mysql

结语

首发于我的个人博客,新的项目演示地址:perfect-ssm,登录账号:admin,密码:123456

如果有问题或者有一些好的创意,欢迎给我留言,也感谢向我指出项目中存在问题的朋友。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 修改
  • 测试
  • 结语
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档