Mybatis中foreach和批量添加可能出现的错误

错误信息:

### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'insert into tbl_employee(last_name,email,gender,d_id)
values ('mith','smith@q' at line 4
### The error may exist in EmployeeMapperDynamicSQL.xml
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: insert into tbl_employee(last_name,email,gender,d_id) values (?,?,?,?) ; insert into tbl_employee(last_name,email,gender,d_id) values (?,?,?,?) ; insert into tbl_employee(last_name,email,gender,d_id) values (?,?,?,?) ; insert into tbl_employee(last_name,email,gender,d_id) values (?,?,?,?) ; insert into tbl_employee(last_name,email,gender,d_id) values (?,?,?,?)
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'insert into tbl_employee(last_name,email,gender,d_id)
values ('mith','smith@q' at line 4

批量保存的代码如下:

<insert id="addEmps">
        <foreach collection="emps" item="emp" separator=";">
            insert into tbl_employee(last_name,email,gender,d_id)
            values (#{emp.lastName},#{emp.email},#{emp.gender},#{emp.dept.id})
        </foreach>
    </insert>

错误原因:使用 ";" 分隔,MySql一次执行多次默认是false的,需要改成allowMultiQueries=true。具体如下

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybait?allowMultiQueries=true
jdbc.username=root
jdbc.password=root

 

posted @ 2021-01-31 16:31  金玉良猿  阅读(903)  评论(0)    收藏  举报