参数 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.   

    两个办法
    1.别在循环里面做数据库连结,可在再方法的参数中巴connection传进去
    2.使用Statement的批处理机制
    stm.addBatch();
    stm.executeBatch();
    Spring得JDBC模版也要看场合来用的,虽然在代码量上作了很大的精简,但有时性能方面却不能令人满意啊
      

  2.   

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