Mybatis插入时获得它的自增主键id

<!--增加-->
    <insert id="insertStockStorage" useGeneratedKeys="true" keyProperty="id">
        <!--返回增加后的id-->
        <selectKey resultType="java.lang.Long" order="AFTER" keyProperty="id">
            select LAST_INSERT_ID()
        </selectKey>
        INSERT INTO tb_stock_storage (warehouse_id, sku_id, quanty) VALUES (#{warehouseId}, #{skuId}, #{quanty})
    </insert>

下面这两种方式都只适用于主键自动生成策略

第一种方式

可以看到有一段代码为selectKey,这段代码的作用就是可以在插入之后获取新插入的主键id值;
下面来说一下它的各个参数的作用

keyProperty:设置的目标属性,也就是返回的列;可以设置多个,以逗号间隔
keyColumn:与keyProperty相对应,当两者的名称不一致时可以起到作用
resultType:结果的类型;可设可不设,Mybatis可以自动设置
order:可以设置为BEFORE或者AFTER;当设置成BEFORE的时候,它会优先选择主键,设置好keyProperty之后才执行插入语句


第二种方式

再说一下insert标签,设置了两个三个属性
id即是对应Dao层的方法名称
keyProperty:实体的主键
useGeneratedKeys值有true和false,默认值为false

(仅适用于 insert 和 update)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系型数据库管理系统的自动递增字段)

参考:https://mybatis.org/mybatis-3/zh/sqlmap-xml.html#insert_update_and_delete

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值