不知道是不是Tk.Mapper的通病,我在用@Update注解进行批量更新的时候报了个错误,大概是说无法get到这个实体对象,初步认为是java数据类型和mysql不一致,mybatis映射没生效。
//代码大概如下
@Update("<script>" +
"update table SET status = 0 " +
"where id in " +
"<foreach collection = 'list' item = 'item' index='index' open = '(' separator= ',' close = ')' >" +
"#{item.id>"
"</foreach>" +
"</script>"
List<test> batchUpdate(@Param("list") List<Integer> id)
我查阅网上都是用这一套来进行批量update,但是出问题了,问题出在#预处理这里(加JdbcType也没用)
最后看到一个csdn博客说的很详细,有两种处理方式,一种是用$这个我试过了没效果,报了新的错误,而且$有SQL注入的风险。
第二种是用collection(用来标识对象)和index(索引)组合,通过索引来遍历list,即
#{list[${index}]}
最终完美解决问题
参阅博客:Mybatis框架:foreach循环遍历字段以及mybatis取值报错There is no getter for property named '__frch_item_0’问题的记录