连接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();
}

做过一些项目,以前没想过总结。特此总结一下,希望能帮助需要帮助的人同学,如有描述不准确的,恳请指正,谢谢。

猜你喜欢

转载自blog.csdn.net/qq_18937429/article/details/82977794