簡體   English   中英

Mybatis使用生成的鍵進行批量插入

[英]Mybatis Use generated keys for Batch Insert

我在Mybatis中完成了批量插入,它運行正常。 但是我不確定如何為bean類中的每一行存儲生成的主鍵。 這是我的代碼,

Mapper.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.xxxx.sample.test.dao.TestDAO">
        <insert id="insertEmployeeList" parameterType="java.util.List">
            INSERT ALL
            <foreach collection="list" item="element" index="index">
                INTO EMPLOYEE (name) values (#{element.name})
            </foreach>
            SELECT * FROM dual
        </insert>
    </mapper>

Emp.java

public class Emp {
public Emp(int id, String name) {
this.id = id;
this.name = name;
}
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

Employee.java

public class Employee {
private List<Emp> list = new ArrayList<Emp>();
public List<Emp> getList() {
return list;
}
public void setList(List<Emp> list) {
this.list = list;
}
}

在上面的示例中,Employee是要保存在包含Emp列表的數據庫中的對象。

嘗試使用useGeneratedKeys="true" keyProperty="id" keyColumn="id"和您的插入塊。

<insert id="insertEmployeeList" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id"  keyColumn="id">
INSERT ALL
  <foreach collection="list" item="element" index="index">
    INTO EMPLOYEE (name) values (#{element.name})
  </foreach>
</insert>

為什么select在插入內部做? 就是想。

但是我不確定如何為bean類中的每一行存儲生成的主鍵。

如果要將生成的主鍵映射到pojo,則insert xml中的foreach將不起作用。 您必須使用useGeneratedKeys =“true”編寫簡單插入,並為要保留的每條記錄調用它。

在這里給出了詳細的答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM