Mybatis批量insert报错的解决办法【the right syntax to use near '' at line...】

Java中使用Mybatis批量插入数据时Mapper.xml中的sql如下:

<insert id="batchSave">
into t_emp(emp_name,emp_email,dept_id) VALUES
<foreach collection="list" item="emp" separator=",">
(#{emp.empName}, #{emp.empEmail}, #{emp.deptId})
</foreach>
</insert>
DAO层方法:

/**
*
* @Title: batchSave
* @Description: 批量保存
* @param List
* @throws Exception
*/
public void batchSave(List<Emp> empList);
修改MyBatis测试类,增加测试方法testBatchSave

@Test
public void testBatchSave() throws IOException {
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession openSession = sqlSessionFactory.openSession();
try {
EmpMapper mapper = openSession.getMapper(EmpMapper.class);
List<Emp> empList = new ArrayList<Emp>();
empList.add(new Emp(null,"Lucy","Lucy@sina.com",1));
empList.add(new Emp(null,"Lily","Lily@sina.com",2));
empList.add(new Emp(null,"Lizy","Lizy@sina.com",3));
//一定要先检查empList不为空再插入
if(empList!=null){
mapper.batchSave(empList);
}
//别忘了事务最后要提交
openSession.commit();
} finally {
openSession.close();
}
}
出现错误如下:

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 '' at line 1......
解决办法:

1.检查SQL语句是不是出现SQL固定的关键字(不论大小写,都不能出现);

2.不确定的话将表名,字段名用`[ESC下面的按钮]引用起来;

3.检查Java代码中批量的插入的List是不是为空,一定要判断不为空再调用批量插入函数;

4.连接mysql的url后面加上&amp;allowMultiQueries=true;

5.使用mybtis的Batch类型的Executor使用是否正确;

SqlSession sqlSession = sqlSessionTemplate.getSqlSessionFactory().openSession(ExecutorType.BATCH, false);

下面列出MySQL所有关键字,希望给使用MySQL的朋友提供一些参考帮助。

ADD ALL ALTER
ANALYZE AND AS
ASC ASENSITIVE BEFORE
BETWEEN BIGINT BINARY
BLOB BOTH BY
CALL CASCADE CASE
CHANGE CHAR CHARACTER
CHECK COLLATE COLUMN
CONDITION CONNECTION CONSTRAINT
CONTINUE CONVERT CREATE
CROSS CURRENT_DATE CURRENT_TIME
CURRENT_TIMESTAMP CURRENT_USER CURSOR
DATABASE DATABASES DAY_HOUR
DAY_MICROSECOND DAY_MINUTE DAY_SECOND
DEC DECIMAL DECLARE
DEFAULT DELAYED DELETE
DESC DESCRIBE DETERMINISTIC
DISTINCT DISTINCTROW DIV
DOUBLE DROP DUAL
EACH ELSE ELSEIF
ENCLOSED ESCAPED EXISTS
EXIT EXPLAIN FALSE
FETCH FLOAT FLOAT4
FLOAT8 FOR FORCE
FOREIGN FROM FULLTEXT
GOTO GRANT GROUP
HAVING HIGH_PRIORITY HOUR_MICROSECOND
HOUR_MINUTE HOUR_SECOND IF
IGNORE IN INDEX
INFILE INNER INOUT
INSENSITIVE INSERT INT
INT1 INT2 INT3
INT4 INT8 INTEGER
INTERVAL INTO IS
ITERATE JOIN KEY
KEYS KILL LABEL
LEADING LEAVE LEFT
LIKE LIMIT LINEAR
LINES LOAD LOCALTIME
LOCALTIMESTAMP LOCK LONG
LONGBLOB LONGTEXT LOOP
LOW_PRIORITY MATCH MEDIUMBLOB
MEDIUMINT MEDIUMTEXT MIDDLEINT
MINUTE_MICROSECOND MINUTE_SECOND MOD
MODIFIES NATURAL NOT
NO_WRITE_TO_BINLOG NULL NUMERIC
ON OPTIMIZE OPTION
OPTIONALLY OR ORDER
OUT OUTER OUTFILE
PRECISION PRIMARY PROCEDURE
PURGE RAID0 RANGE
READ READS REAL
REFERENCES REGEXP RELEASE
RENAME REPEAT REPLACE
REQUIRE RESTRICT RETURN
REVOKE RIGHT RLIKE
SCHEMA SCHEMAS SECOND_MICROSECOND
SELECT SENSITIVE SEPARATOR
SET SHOW SMALLINT
SPATIAL SPECIFIC SQL
SQLEXCEPTION SQLSTATE SQLWARNING
SQL_BIG_RESULT SQL_CALC_FOUND_ROWS SQL_SMALL_RESULT
SSL STARTING STRAIGHT_JOIN
TABLE TERMINATED THEN
TINYBLOB TINYINT TINYTEXT
TO TRAILING TRIGGER
TRUE UNDO UNION
UNIQUE UNLOCK UNSIGNED
UPDATE USAGE USE
USING UTC_DATE UTC_TIME
UTC_TIMESTAMP VALUES VARBINARY
VARCHAR VARCHARACTER VARYING
WHEN WHERE WHILE
WITH WRITE X509
XOR YEAR_MONTH ZEROFILL

posted @ 2018-12-24 23:20 EliteQing 阅读(...) 评论(...) 编辑 收藏

Mybatis批量insert报错的解决办法【the right syntax to use near '' at line...】相关推荐

  1. ibatis mysql 同时删多个表报错_MySQL中Multiple primary key defined报错的解决办法

    MySQL中Multiple primary key defined报错的解决办法 创建主键可以有两种方式: create table 表名( 字段名 类型, 字段名 类型, -- primary k ...

  2. 【DSP】CCS6.1导入CCS3.3工程全过程以及“N个报错”的解决办法

    本人小硕,由于接到了一个关于语音识别的项目,一不小心掉到DSP的坑.首先需要解决的就是关于CCS软件的使用,网上N个教程,总感觉自己这边出的问题总能"完美避开"他们的范围,摸爬滚打 ...

  3. windows10下,from skimage import morphology 报错的解决办法

    windows10下,from skimage import morphology 报错的解决办法 报错原因 没有安装numpy+mkl库 解决方法 卸载skimage pip uninstall s ...

  4. Xamarin开发安装Visual Studio 2015 update2报错的解决办法

    Xamarin开发安装Visual Studio 2015 update2报错的解决办法 错误信息:update 2 requires a member of the visual studio 20 ...

  5. source insight删除保存路径为中文的project工程项目报错的解决办法

    http://blog.csdn.net/yixilee/archive/2010/09/01/5855663.aspx source insight删除已加载的project工程项目报错的解决办法 ...

  6. 图解Myeclipse 导入Java Web项目报错的解决办法听语音

    图解Myeclipse 导入Java Web项目报错的解决办法听语音 https://jingyan.baidu.com/article/046a7b3e953ef3f9c27fa93d.html

  7. 12 c for. oracle rac,【案例】Oracle RAC FOR AIX搭建执行root.sh时两次报错的解决办法

    天萃荷净 运维DBA反映在aix 5.3 ml6安装10.2.0.1 rac报错0509-036 Cannot load program crsctl.bin because of the follo ...

  8. mybatis批量更新 mysql 报错,Mybatis批量更新报错问题

    下面给大家介绍mybatis批量更新报错问题, allowMultiQueries=true 后来发现是jdbc链接没有加允许批量更新操作的参数引起的,不加会报badsql,mysql版的mybati ...

  9. SQLSERVER 创建ODBC 报错的解决办法 SQLState:‘01000‘的解决方案

    SQLSERVER 创建ODBC 报错的解决办法 SQLState:'01000'的解决方案 参考文章: (1)SQLSERVER 创建ODBC 报错的解决办法 SQLState:'01000'的解决 ...

  10. 安装mysql驱动报错_java.sql.SQLException: org.gjt.mm.mysql.Driver 报错【解决办法】

    今天爱分享给大家带来java.sql.SQLException: org.gjt.mm.mysql.Driver 报错[解决办法],希望能够帮助到大家. spring boot mysql 中启动报错 ...

最新文章

  1. 要看懂MATLAB的Help需要积累的英文词汇!
  2. Android内核开发:系统编译输出的镜像文件
  3. 卸载和安装LINUX上的JDK
  4. Android服务二 创建绑定服务
  5. 安利一个超好用的Pandas数据挖掘分析神器
  6. 导语3——node以及npm
  7. 网络协议分析 | 传输层 :史上最全UDP、TCP协议详解,一篇通~
  8. 今天用python的turtle简单画了一副眼镜
  9. cad计算总长度插件_超实用的CAD插件大合集,视频教程手把手教学,工作效率翻倍...
  10. java实现单向链表的增、删、改、查
  11. 避免使用PHP保留字作为常量、类名和方法名,以及命名空间的命名
  12. 如何使用Intellij IDEA工具导入SVN项目
  13. listView中的button控件获取索引
  14. python类的多态_8.python之面相对象part.6(python类中的多态与多态性)
  15. 对java类中注释的认识
  16. DataTable的Select方法
  17. java中带包的类在命令行中的编译和执行中出现的问题及解决办法
  18. 虚拟机中标麒麟操作系统gcc安装
  19. noi 1.5第38题 计算多项式的导数
  20. Linux-07-GNU-GPL-自由软件知识小结(L002-21)

热门文章

  1. 10. Browser 对象 - Location 对象(2)
  2. maven编译时出现读取XXX时出错invalid LOC header bad signature
  3. 【学习笔记】深入理解js原型和闭包(15)——闭包
  4. 烧写树莓派系统,SSH配置,无屏登录流程
  5. tcp 重发 应用层重传
  6. winform打包项目
  7. Converter使用及其原理
  8. 【FIR.im赞助】jQuery编程挑战#012:生成菜单添加和删除动画效果
  9. 10 things they never teach in college about programming
  10. 网页编辑器粘贴word格式的处理