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一万次,和数据库交互一万次,太没有效率了
现在请问怎样优化这段代码?
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一万次,和数据库交互一万次,太没有效率了
现在请问怎样优化这段代码?
解决方案 »
- 如何在JS中通过JAVABEAN提取数据库数据?
- 来来,大家讨论下这个报名的界面怎么展现
- 求乱码问题解决方案[up有分]
- 我改一个网站asp的,那网站的主页上,在要有图片 和数据的时候都调用了很多方法,来显示。我看了看,是/inc/config.asp里面的,里面有很
- 又一个巨简单的问题:在jsp中String如何转换成int?
- 请问,是项目中,报表除了浏览和打印外,还需要具备那些功能吗
- str.trim()无法去掉前面空格串
- 从哪里能下载到解析XML的开发包呀?
- 请问如何不让对方在IE的"显示源文件"中显示网址!
- 验证码在ie下不能显示
- struts2 校验错误问题!
- jsp中找不到自定义的一个类的问题!
1 一个表不可能有上万的字段,所以你的假设不成立
2 一个update可以更新多个字段,这个毋庸置疑
3 你的方法为何不能是
insertRoleTaskStatus(DB db,Set<roleTaskStatus>set);
呢?这样至少你可以去拼装出来一个update进行更新,或者对应于一个对象的多个属性。
当然一万条应该问题不大。
再不行就搞个存储过程。
stat.addBatch(sql);stat.executeBatch();