1. 程式人生 > >連線Oracle,Oracle批量插入

連線Oracle,Oracle批量插入

1、載入資源

DriverManagerDataSource dataSource = JdbcTemplateUtil.getDataSource("driverClassName", "url", "username", "password");
JdbcTemplate jdbcTemplate = JdbcTemplateUtil.getJdbcTemplate(dataSource); 

2、執行查詢sql

jdbcTemplate.queryForList(sql);

3、事務管理

DataSourceTransactionManager transactionManager = JdbcTemplateUtil.getTransactionManager(dataSource);
TransactionStatus status = JdbcTemplateUtil.getTransactionStatus(transactionManager,
						TransactionDefinition.PROPAGATION_REQUIRED);
String sql = "insert into db(id1,id2) values(?,?)";
try {
    //初始化事務
	jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
        // 這個方法設定更新記錄數,通常saveList裡面存放的都是我們要更新的,所以返回list.size();
	    public int getBatchSize() {
	        return saveList.size();
	    }
	    public void setValues(PreparedStatement ps, int i) throws SQLException {
		    Map<String, Object> map = (Map<String, Object>) saveList.get(i);
            //根據sql問號順序
		    ps.setString(1, StringUtils.isEmpty(map);
		    ps.setString(2, StringUtils.isEmpty(data);
	    }
	});
    //提交事務
	transactionManager.commit(status);
} catch (Exception e) {
	// 出現異常,回滾事務,以免出現髒資料,資料不完整的問題
	transactionManager.rollback(status);
	log.info(MessageFormat.format("入庫操作異常。資料為:[{0}]", e.toString()));
	e.printStackTrace();
}

做過一些專案,以前沒想過總結。特此總結一下,希望能幫助需要幫助的人同學,如有描述不準確的,懇請指正,謝謝。