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>
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;
}
}
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
5条答案
按热度按时间bd1hkmkf1#
当我使用MySQL作为数据库时,经过几次尝试,这就是它对我的工作方式。
kiayqfof2#
Mapper.xml
这就是Mapper xml中的查询方式
f3temu5u3#
您可以使用annotations(@org.apache.ibatis.annotations.Insert)为整个列表执行单个插入。
记住: 您不需要任何SQL提供程序类。
如果有2项,则输出SQL语句:
附注
@Insert接收一个String[],因此对于每个值,它将在String之间添加一个空格。
wnvonmuf4#
配置您的日志记录系统以打印出生成的查询,然后尝试直接在数据库中执行它们。
在您的例子中,预期的查询应该是
就我记忆所及,这是不正确的。
INSERT INTO
只需要一组VALUES
。我查了一下documentation,它看起来也是这样的。参见this answer了解如何在oracle中
INSERT
多行。5f0d552i5#
[tistory] http://woniperstory.tistory.com/194:此链接显示正确答案!!!