String statusID[]=request.getParameterValues("StatusID");
db.setAutoCommit(false);
try{
RoleTaskStatusFactory.delRoleTaskStatus(db, roleID);
RoleTaskStatus roleTaskStatus=null;
if(statusID!=null){
for(int i=0;i <statusID.length;i++){
roleTaskStatus=new RoleTaskStatus();
roleTaskStatus.setRoleID(roleID);
roleTaskStatus.setCustomFlag(1);
roleTaskStatus.setTaskStatus(new TaskStatus(Integer.parseInt(statusID[i])));
RoleTaskStatusFactory.insertRoleTaskStatus(db, roleTaskStatus);
}
}
db.commit();
}
请看上面的代码,这是往数据表中一次插入多个状态,我是把状态ID放在一个数组里,然后循环往数据库里插入记录
每次都要roleTaskStatus=new RoleTaskStatus(); 创建新对象,然后insertRoleTaskStatus
如果有一万个状态,就要new一万次,和数据库交互一万次,太没有效率了
现在请问怎样优化这段代码?
我的答复:
设计决定了使用方式,也决定了效率。
1 一个表不可能有上万的字段,所以你的假设不成立
2 一个update可以更新多个字段,这个毋庸置疑
3 你的方法为何不能是
insertRoleTaskStatus(DB db,Set<roleTaskStatus>set);
呢?这样至少你可以去拼装出来一个update进行更新,或者对应于一个对象的多个属性。