Mysql批量插入ExecutorException: Erro
2017-10-08 本文已影响113人
阿历Ali
在写批量插入时遇到了一个MyBatisSystemException,ExecutorException: Error getting generated key or setting result to parameter object. Cause: org.apache.ibatis.binding.BindingException: Parameter 'serialNumber' not found. Available parameters are [list] 这句话的意思是,在获取生成的key或把结果赋值到参数对象时出现了参数异常。
在我的问题场景中,原因是无法把结果赋值到参数对象。下面具体来看问题的来龙去脉。
我要向一张表批量插入数据,在xml文件中写的插入语句如下:
表中主键SERIAL_NUMBER设为自增。
以上写法抛异常。解决方法是修改xml如下:
将useGeneratedKeys设为false
<insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="false" keyProperty="serialNumber">
或去掉useGeneratedKeys和keyProperty
<insert id="batchInsert" parameterType="java.util.List">
不过以上做法可能误导你,因为原来图片中的写法可以是正确的,低版本如上写法会抛异常,高版本不会抛异常。罪魁祸首是配置的Mybatis的版本。
如果你遇到跟我一样的问题,不妨用这几种方法解决异常。