1、报错信息
运行环境:springboot + mybatis,数据库为mysql,映射xml文件配置信息useGeneratedKeys="true"
最近在检查一个项目,业务是向数据库中插入一条数据(记录), 发现了一个错,报错信息如下:
Caused by: org.apache.ibatis.executor.ExecutorException: Error getting generated key or setting result to parameter object
2、错误原因
要向一张表批量插入数据,在xml文件中写的插入语句如下:
useGeneratedKeys = true (使用生成的主键) 这个表示插入数据之后返回一个自增的主键id给你对应实体类中的主键属性。通过这个设置可以解决在主键自增的情况下通过实体的getter方法获取主键(当然还需要keyproperty指明数据库中返回的主键id给实体类中的哪个属性)。
keyproperty = 主键,这样就可以解决在主键自增的情况下获取主键。
3、解决方法
方案1:
将useGeneratedKeys="true" 改为 useGeneratedKeys="false",或者将useGeneratedKeys="true"和keyProperty="id"直接删除
方案2:
配置的Mybatis的版本,高版本的不会出现这个问题。
完结!