前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mybatis 中的主键返回

Mybatis 中的主键返回

作者头像
MashiroT
发布2022-10-28 08:45:09
7630
发布2022-10-28 08:45:09
举报
文章被收录于专栏:MashiroのBlog

XML方式

返回自增主键

代码语言:javascript
复制
<insert id="insert1" useGeneratedKeys="true" keyProperty="id">
    insert into sys_user(user_name,password,email,info,create_time)
    values(#{userName},#{password},#{email},#{info},#{createTime})
</insert>

使用useGeneratedKeys设置为true后 , MyBatis会使用JDBC的getGeneratedKeys方法取出由数据库内部生成的主键 . 获得主键值之后将其赋给keyProperty配置的 id 属性 . 当需要设置多个属性时 , 使用逗号隔开 , 这种情况下 还需要配置 keyColumn属性 , 按顺序指定数据库的列 , 这里列的值会和 keyProperty 配置的属性一一对应 . 由于要使用数据库返回的主键值 , 所以SQL上下两部分的列中去掉了 id 列和对于的 #{id} 属性

返回非自增主键

采用<selectKey>标签获取主键的值 , 这种方式对提供和不提供主键自增功能的数据库同样适用

代码语言:javascript
复制
<insert id="insert2">
    insert into sys_user(user_name,password,email,info,create_time)
    values(#{userName},#{password},#{email},#{info},#{createTime})
    <selectKey resultType="int" keyProperty="id" order="AFTER">
        SELECT LAST_INSERT_ID()
    </selectKey>
</insert>

selectKey标签的 keyProperty和上面useGeneratedKeys的用法和含义一样 , 这里的resultType用于设置返回值类型. order 属性和数据库相关 , 在MYSQL 中 , order是AFTER , 因为当前及记录的主键值在insert语句执行成功之后才能拿到 , 而在ORACLE中 ,oder是BEFORE , 因为ORACLE需要先从序列取到值 , 再将其作为主键插入到数据库

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022 年 09 月,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • XML方式
    • 返回自增主键
      • 返回非自增主键
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档