MyBatis: foreach binding 错误

我有代码如下

@Update(''' UPDATE `book_sale` SET `status`= #{status} WHERE id IN
            <foreach collection="idList" open="(" close=")" separator="," item="item">
                #{item}
            </foreach>
        ''')
int updateStatusByIdList(@Param("idList") List<Long> idList, @Param("status") SaleStatus status)

跑起来后,发现如下错误,很奇怪


        2019-11-26 21:30:27.248 [http-nio-6081-exec-2] DEBUG a.a.p.m.R.updateStatusByIdList - ==>  Preparing: UPDATE `book_sale` SET `status`= ? WHERE id IN <foreach collection="idList" open="(" close=")" separator="," item="item"> ? </foreach>
    2019-11-26 21:30:27.253 [http-nio-6081-exec-2] ERROR a.a.p.service.impl.SaleService - [SaleService.updateStatus]: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'item' not found. Available parameters are [idList, param1, status, param2]
    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'item' not found. Available parameters are [idList, param1, status, param2]
            at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77)
            at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
            at com.sun.proxy.$Proxy97.update(Unknown Source)
            at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:294)`
            

检查多遍,写的应该没问题,怎么回事啊?

阅读 2.7k
2 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题