使用mybatis-plus批量插入的時候報錯信息為:com.alibaba.druid.sql.parser.ParserException: syntax error, expect ')', pos 40, line 1, column 41, token EOF 排查sql日誌發現生成的sq ...
使用mybatis-plus批量插入的時候報錯信息為:com.alibaba.druid.sql.parser.ParserException: syntax error, expect ')', pos 40, line 1, column 41, token EOF
排查sql日誌發現生成的sql為:
Preparing: INSERT INTO ods_zq_zqgs_zqtz_m VALUES
merge sql error, dbType mysql, druid-1.1.22, sql : INSERT INTO ods_zq_zqgs_zqtz_m VALUES
com.alibaba.druid.sql.parser.ParserException: syntax error, expect ')', pos 40, line 1, column 41, token EOF
可以看出,是sql語法錯誤,缺失了小括弧), 看上面的語句很明顯可以看出,生成的sql語句values後面缺失了括弧。
SQL缺失括弧的原因
mybatis-plus批量插入的欄位生成依賴對象的屬性值,當對象屬性值都是null的時候,就發生了上述錯誤!總得來說算是mybatis-plus的bug。但是考慮的業務上居然插入了一條全是null的記錄,確實也不合理!所以說,這個bug的拋出來讓開發者解決也可以理解。
解決辦法
註意插入的對象是否全部屬性為null,將某些屬性賦值值,或乾脆去除此記錄即可!