1、问题描述:
在业务中有一个根据ID,批量更新状态的操作。发现后台sql语句执行的时候id为null
2、问题发生时
dao和xml写法
dao
void updateStatus(List<String> idlist,String status);
xml
update kkkk set status_approval_id=#{status} where id in
<foreach collection="idlist" open="(" close=")" separator="," item="rp_id">
#{rp_id}
</foreach>
这样运行提示idlist 参数找不到,修改成
update kkkk set status_approval_id=#{arg1} where id in
<foreach collection="#{arg0}" open="(" close=")" separator="," item="rp_id">
#{rp_id}
</foreach>
这样是可以运行,但是就出现了标题的问题,arg1可以正常接收参数,但是id都是null
3、解决方法
将list,status都放在一个map里,dao方法参数就一个map.
最后代码:
void updateStatus(HashMap<String,Object> map);
map.put("ids",idList);
map.put("status",status);
update kkkk set status_approval_id=#{status} where id in
<foreach collection="ids" open="(" close=")" separator="," item="rp_id">
#{rp_id}
</foreach>