使用mybatis批量插入数据时回填主键自增ID的值

一、定义插入数据库的对象模型

package com.postgres.model;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 用户模型定义。
 */
@ApiModel(value = "用户模型")
@Data
public class User {

    /**
     * ID
     */
    @ApiModelProperty(value = "id", example = "-1")
    private int id = -1;

    /**
     * 姓名
     */
    @ApiModelProperty(value = "姓名", example = "张三")
    private String name = "";
}

id对应的是数据库中的自增主键id。批量插入数据后,用数据库分配的id值回填该属性。

二、定义mapper层接口

package com.postgres.mapper;

import com.postgres.model.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface UserMapper {
    /**
     * 批量插入用户数据。
     *
     * @param userList
     */
    void insertUserV3(List<User> userList);
}

userList参数不加@Param注解。

三、配置XML

    <insert id="insertUserV3"  useGeneratedKeys="true" keyProperty="id" keyColumn="id">
        INSERT INTO t_user (name)
        VALUES
        <foreach item="item" collection="list" separator=",">
            (#{item.name})
        </foreach>
    </insert>

注意:collection的值固定写为list。

发布了113 篇原创文章 · 获赞 183 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/ylforever/article/details/96694952
今日推荐