报错:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: Error getting generated key or setting result to parameter object. Cause: org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [list, param1]
<insert id="batchInsert" parameterType="java.util.List" keyColumn="id" useGeneratedKeys="true" keyProperty="id">
insert into jg_message (id, message_id, message_datetime,
message_type, message_create_user_id, message_to_user_id,
message_content, message_key)
values
<foreach collection ="list" item="jgMessage" separator =",">
(#{jgMessage.id,jdbcType=INTEGER}, #{jgMessage.messageId,jdbcType=INTEGER}, #{jgMessage.messageDatetime,jdbcType=TIMESTAMP},
#{jgMessage.messageType,jdbcType=INTEGER}, #{jgMessage.messageCreateUserId,jdbcType=VARCHAR}, #{jgMessage.messageToUserId,jdbcType=VARCHAR},
#{jgMessage.messageContent,jdbcType=VARCHAR}, #{jgMessage.messageKey,jdbcType=VARCHAR})
</foreach >
</insert>
int batchInsert(@Param("list") List<JgMessage> jgMessage);
插入报错的原因
后查证资料,批量插入返回ID报错bug在mybatis.3.3.1才被修复,故将mybatis升级为3.3.1,spring-mybatis版本不做处理,重启后正常插入且成功返回正确id
<!-- mybatis核心包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- mybatis版本号 -->
<mybatis.version>3.3.1</mybatis.version>