我使用mybatis 3.3.0-SNAPSHOT。我想插入对象列表,并获取每个对象的id。在界面中我有:
public void createCore(@Param("cores")List<Object> cores);
在xml mapper中我有:
<insert id="createCore" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
INSERT INTO mytable (raz,dva,tri )
VALUES
<foreach collection="cores" item="core" separator=",">
(#{core.raz}, #{core.dva}, #{core.tri})
</foreach>
</insert>
我得到了:
更新数据库时出错。原因:org.apache.ibatis.executor.ExecutorException:生成错误
键或将结果设置为参数对象。原因: org.apache.ibatis.binding.BindingException:参数&#39; id&#39;未找到。 可用参数是[cores,param1]
我试过了keyProperty =&#34; core.id&#34;但得到同样的错误。
如何解决?
答案 0 :(得分:2)
此问题已在版本3.3.1中修复
答案 1 :(得分:0)
在尝试使用usegenickeys插入多行时也得到了该错误。
在这里提到了我找到的解决方法:http://mybatis-user.963551.n3.nabble.com/MyBatys-Batch-Insert-doubt-error-retrieving-generated-id-binding-to-POJO-td4029977.html
您需要做的就是将参数重命名为“ list”。因此,在上面的示例中,“核心”->“列表”和自动生成的ID均有效。