昨晚睡前写了一个小功能,由View层提交一组userID,交给Controller对一组用户的状态进行update。事务放在了Service层,逻辑是先根据userID把PO类get出来,然后修改其中一个值,再update回去。Debug的时候却发现,每次都只能更新第一条记录,打印出来的SQl就只有第一个userID有select和update,后面的都只有select,返回的结果是null。当时第一个反应就是锁表了,然后各种调试事务的参数...
后来终于发现,跟事务什么的半毛钱关系都没有。
一开始使用String来获取表单提交的checkbox值,像这样
private String userIDList;public void setUserIDList(String userIDList) { this.userIDList = userIDList;}
打印出来的结果像这样
id2, id4, id5, id6
然后按逗号分割
String userIDs[] = userIDList.split(",");
再打印
id2 id4 id5 id6
好了该死的空格出现了。原因不明。
解决办法如下:
private ListuserIDs;/** * 因代理需多次获取List并给List赋值,需get方法 */public List getUserIDs() { return userIDs;}public void setUserIDs(List userIDs) { this.userIDs = userIDs;}