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
本文来自博客园,作者:金玉良猿,转载请注明原文链接:https://www.cnblogs.com/LLFA/p/14352969.html

浙公网安备 33010602011771号