首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

哪位有时间帮小弟我优化一下这个方法,因为执行完需要40秒左右

2011-12-01 
哪位有时间帮我优化一下这个方法,因为执行完需要40秒左右参数funcCodeList有80条记录是固定的publicvoidcr

哪位有时间帮我优化一下这个方法,因为执行完需要40秒左右
参数funcCodeList有80条记录是固定的
public   void   createProjFuncTest(Long   projStaffId,   List   funcCodeList){
if   (funcCodeList   !=   null)   {
int   len   =   funcCodeList.size();
for   (int   i   =   0;   i   <   len;   i++)   {
Misfunc   misfunc   =   (Misfunc)   funcCodeList.get(i);
//   项目员工功能权限
ProjStaffFunc   projStaffFunc   =   new   ProjStaffFunc();
projStaffFunc.setFuncCode(misfunc.getMisfuncCode());
projStaffFunc.setProjStaffId(projStaffId);
//   创建项目员工的功能权限

Long   projEmpFuncId   =   new   Long(super.getNextIdFromSequence());
String   sql   =   "insert   into   "   +   "\r\n "   +   "         SYS_PROJ_STAFF_FUNC(   "//   项目员工功能权限表
+   "\r\n "   +   "         PROJ_EMP_FUNC_ID   "   +   "\r\n "   //   项目员工功能ID
+   "     ,   PROJ_STAFF_ID   "   +   "\r\n "   //   项目员工ID
+   "     ,   MISFUNC_CODE   "   +   "\r\n "   //   功能代码
+   "     )   "   +   "\r\n "   +   "values(   "   +   "\r\n "   +   "         ?   "   +   "\r\n "
+   "     ,   ?   "   +   "\r\n "   +   "     ,   ?   "   +   "\r\n "   +   "     )   "   +   "\r\n ";

Object[]   value   =   new   Object[]   {   projEmpFuncId,
projStaffFunc.getProjStaffId(),   projStaffFunc.getFuncCode()   };
getJdbcTemplate().update(sql,   value);
}
}
}

[解决办法]
大部分时间应该消耗在数据库的更新上了吧, 把表主键贴一下
[解决办法]
两个办法
1.别在循环里面做数据库连结,可在再方法的参数中巴connection传进去
2.使用Statement的批处理机制
stm.addBatch();
stm.executeBatch();
Spring得JDBC模版也要看场合来用的,虽然在代码量上作了很大的精简,但有时性能方面却不能令人满意啊
[解决办法]
up!
[解决办法]
新手发帖 乱说的啊

这快批处理没试过,但我刚做的东西直接用
insertrow都没这么慢的,应该把连接拿出去 做一次连接后 后边直接insert就可以了吧

[解决办法]
可以考虑用存储过程去实现数据库的插入,然后在程序中调用存储过程

热点排行