Mybatis 插入/批量插入返回主键 ID

有时候我们在插入一条数据后需要返回主键ID,Mytais 提供了相关方法。

User 实体类

public class User {
    private Integer userId;
    private String nickName;
    private String realName;
    private String avatar;
}

Mapper 接口

Long save(User user); // 单条插入
Long batchSave(List<User> users);// 批量插入

单条插入返回主键

Mapper 映射文件

<!-- 插入时将主键值设置到参数user的userId字段上 -->
<insert id="save" useGeneratedKeys="true" keyProperty="userId">
    insert into user (nick_name, real_name, avatar)
    values (#{nickName}, #{realName}, #{avatar})
</insert>

或者

<insert id="save" useGeneratedKeys="true" keyProperty="userId">
    <selectKey keyProperty="userId" resultType="int" order="AFTER">
        select last_insert_id();
    </selectKey>
    insert into user (nick_name, real_name, avatar)
    values (#{nickName}, #{realName}, #{avatar})
</insert>

插入成功后 Mybatis 会自动将主键 ID 赋值给 user 对象的 userId 字段。

批量插入返回主键

Mapper 映射文件

<!-- 批量插入时将主键值设置到参数user的userId字段上 -->
<insert id="batchSave" useGeneratedKeys="true" keyProperty="userId">
    insert into user
      (nick_name, real_name, avatar)
    values 
    <foreach collection="list" item="item" separator=",">
        (#{item.nickName}, #{item.realName}, #{item.avatar})
    </foreach>
</insert>

UserService

List<User> batchSave(List<User> users){
	userMapper.batchSave(users);
	return users;
}

插入成功后,参数 users 中的 User 对象已包含主键 ID 了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值