Mybatis中如何获取生成的主键(mybatis,web开发)

时间:2024-04-30 13:05:35 作者 : 石家庄SEO 分类 : web开发
  • TAG :

如何获取生成的主键

对于支持主键自增的数据库(MySQL)

<insertid="insertUser"useGeneratedKeys="true"keyProperty="userId">insertintouser(user_name,user_password,create_time)values(#{userName},#{userPassword},#{createTime,jdbcType=TIMESTAMP})</insert>

parameterType 可以不写,Mybatis可以推断出传入的数据类型。如果想要访问主键,那么应当parameterType 应当是java实体或者Map。这样数据在插入之后 可以通过ava实体或者Map 来获取主键值。通过 getUserId获取主键

不支持主键自增的数据库(Oracle)

对于像Oracle这样的数据,没有提供主键自增的功能,而是使用序列的方式获取自增主键。
可以使用<selectKey>标签来获取主键的值,这种方式不仅适用于不提供主键自增功能的数据库,也适用于提供主键自增功能的数据库
<selectKey>一般的用法

<selectKeykeyColumn="id"resultType="long"keyProperty="id"order="BEFORE"></selectKey>

Mybatis中如何获取生成的主键

<insertid="insertUser"> <selectKeykeyColumn="id"resultType="long"keyProperty="userId"order="BEFORE"> SELECTUSER_ID.nextvalasidfromdual </selectKey> insertintouser( user_id,user_name,user_password,create_time) values(#{userId},#{userName},#{userPassword},#{createTime,jdbcType=TIMESTAMP})</insert>

此时会将Oracle生成的主键值赋予userId变量。这个userId 就是USER对象的属性,这样就可以将生成的主键值返回了。如果仅仅是在insert语句中使用但是不返回,此时keyProperty=“任意自定义变量名”,resultType 可以不写。
Oracle 数据库中的值要设置为 BEFORE ,这是因为 Oracle中需要先从序列获取值,然后将值作为主键插入到数据库中。

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Mybatis中如何获取生成的主键的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Cython是什么下一篇:

12 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18