連線Oracle,Oracle批量插入
阿新 • • 發佈:2018-11-22
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(); }
做過一些專案,以前沒想過總結。特此總結一下,希望能幫助需要幫助的人同學,如有描述不準確的,懇請指正,謝謝。