13

Mapper.xml (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="TestDAO">
<insert id="insertEmployeeList" parameterType="java.util.List">
INSERT INTO EMPLOYEE (id, name) VALUES
<foreach collection="list" item="element" index="index" open="(" separator=","  close=")">
#{element.id}, #{element.name}
</foreach>
</insert>
</mapper>

従業員.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;
  }
}

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;
  }
}

TestDAO.java

public interface TestDAO {
public Integer insertEmployeeList(List<Emp> empList) throws SQLException;
}

Main.java

public class Main {
   public static void main (String args[]) {
       TestDAO tm = session.getMapper(TestDAO.class);
       Employee e = new Employee();
       Emp e11 = new Emp(123,"abc");
       Emp e12 = new Emp(456,"def");
       e.getList().add(e11);
       e.getList().add(e12);
       tm.insertEmployeeList(e.getList());
   }
}

私が得ている例外は次のとおりです。

Error updating database.  Cause: java.sql.SQLSyntaxErrorException: ORA-00913: too many values
The error may involve com.XXXX.sample.test.dao.TestDAO.insertEmployeeList-Inline
The error occurred while setting parameters
Cause: java.sql.SQLSyntaxErrorException: ORA-00913: too many values
4

5 に答える 5

21

私はMySQLをデータベースとして使用しているので、数回試した後、これが私にとってどのように機能したかです。

<insert id="insert" parameterType="java.util.List">
        INSERT INTO games (
        id,
        game_id,
        game_vendor,
        game_code,
        game_name,
        game_type)
        VALUES
        <foreach collection="list" item="element" index="index" open="(" separator="),("  close=")">
            #{element.id},
            #{element.gameId},
            #{element.gameVendor},
            #{element.gameCode},
            #{element.gameName},
            #{element.gameType},
       </foreach>
    </insert>
</mapper>
于 2015-06-30T08:31:36.823 に答える
2

[tistory] ​​http://woniperstory.tistory.com/194 : このリンクは正解を示しています!!!

public  someClass {

    public void someMethod() {

        Map<String,Object> map =  new HashMap<String,Object>() ;
        List<Emp> list =  new ArrayList<Emp>() ;

        ::::  add Emp Objects to list

        map.put("list", list)

        public Integer insertEmployeeList(map) ;
    }
}

public interface TestDAO {
    public Integer insertEmployeeList(Map<String,Object> map) throws SQLException;
}

<?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="TestDAO">  
<insert id="insertEmployeeList" parameterType="java.util.Map">  
INSERT INTO EMPLOYEE (id, name) VALUES  
<foreach collection="list" item="element" index="index" separator=",">  
    ( #{element.id}, #{element.name} )  
</foreach>  
</insert>  
</mapper>  
于 2014-11-12T08:40:39.027 に答える