问题:
我们常用的insert后可以返回主键再用这个主键去更新到别的表中
方案:
分类1,用于像 MySQL 和 SQL Server 这样的关系型数据库管理系统的自动递增字段
需要注意的是当我们插入完成后主键会插入原来的参数对象中,即图中的Admin类a中,那么我们需要取主键的话用,a.getAid()方法即可取到自动插入的主键。
这里的方式是用于
分类2: 如oracle数据库
对于不支持自动生成主键列的数据库和可能不支持自动生成主键的 JDBC 驱动,MyBatis 有另外一种方法来生成主键。(如下方式摘自mybatis官网)
这里有一个简单(也很傻)的示例,它可以生成一个随机 ID(不建议实际使用,这里只是为了展示 MyBatis 处理问题的灵活性和宽容度):
<insert id="insertAuthor">
<selectKey keyProperty="id" resultType="int" order="BEFORE">
select CAST(RANDOM()*1000000 as INTEGER) a from SYSIBM.SYSDUMMY1
</selectKey>
insert into Author
(id, username, password, email,bio, favourite_section)
values
(#{id}, #{username}, #{password}, #{email}, #{bio}, #{favouriteSection,jdbcType=VARCHAR})
</insert>
说明:
这里的<selectKey 可以非常灵活,常用的我们select出Oracle常用的序列来填充这个主键字段
版权声明:本文为weixin_42128648原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。