天天看點

Spring 批量插入

/**
     * 批量插入
     */
    public void insertBudget(List<CostBudget> budgetList) {
        final List<CostBudget> budgetListTemp = budgetList;
        if(budgetListTemp != null && budgetListTemp.size() > 0) {
            String sql= CommonConfig.getString("costbudget.insert.cost_budget","");
            this.jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
                @Override
                public void setValues(PreparedStatement ps, int i) throws SQLException {
                    CostBudget costBudget = budgetListTemp.get(i);
                    ps.setInt(1, costBudget.getTerm());
                    ps.setInt(2, costBudget.getBudgetType());
                    ps.setInt(3, costBudget.getDeptId() != null?costBudget.getDeptId():0);
                    ps.setString(4, costBudget.getImportDeptName());
                    ps.setString(5, costBudget.getKmBh());
                    ps.setString(6, costBudget.getImportKmMc());
                    ps.setBigDecimal(7, BigDecimal.valueOf(costBudget.getCurrentMonth()));
                    ps.setBigDecimal(8, BigDecimal.valueOf(costBudget.getCurrentMonthAdjust()));
                    ps.setBigDecimal(9, BigDecimal.valueOf(costBudget.getCurrentMonthAdAfter()));
                    ps.setBigDecimal(10, BigDecimal.valueOf(costBudget.getSumCurrent()));
                    ps.setBigDecimal(11, BigDecimal.valueOf(costBudget.getSumCurrentAdjust()));
                    ps.setBigDecimal(12, BigDecimal.valueOf(costBudget.getSumCurrentAdAfter()));
                    ps.setBigDecimal(13, BigDecimal.valueOf(costBudget.getYearBudget()));
                    ps.setBigDecimal(14, BigDecimal.valueOf(costBudget.getBudgetCompletionRate()));

                    //每2000條進行事物送出
                    if (i%2000 == 0) {
                        ps.executeBatch(); //執行prepareStatement對象中所有的sql語句
                    }
                }

                @Override
                public int getBatchSize() {
                    return budgetListTemp.size();
                }
            });
        }
    }