org.springframework.jdbc.core.JdbcTemplate.batchUpdate()方法的使用及代码示例

x33g5p2x  于2022-01-21 转载在 其他  
字(13.7k)|赞(0)|评价(0)|浏览(139)

本文整理了Java中org.springframework.jdbc.core.JdbcTemplate.batchUpdate()方法的一些代码示例,展示了JdbcTemplate.batchUpdate()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。JdbcTemplate.batchUpdate()方法的具体详情如下:
包路径:org.springframework.jdbc.core.JdbcTemplate
类名称:JdbcTemplate
方法名:batchUpdate

JdbcTemplate.batchUpdate介绍

暂无

代码示例

代码示例来源:origin: spring-projects/spring-framework

@Override
public int[] batchUpdate(String sql, List<Object[]> batchArgs) throws DataAccessException {
  return batchUpdate(sql, batchArgs, new int[0]);
}

代码示例来源:origin: spring-projects/spring-framework

return batchUpdate(
    sql,
    new BatchPreparedStatementSetter() {

代码示例来源:origin: spring-projects/spring-framework

/**
 * Delegate method to execute the batch insert.
 */
private int[] executeBatchInternal(final List<List<Object>> batchValues) {
  if (logger.isDebugEnabled()) {
    logger.debug("Executing statement " + getInsertString() + " with batch of size: " + batchValues.size());
  }
  return getJdbcTemplate().batchUpdate(getInsertString(),
      new BatchPreparedStatementSetter() {
        @Override
        public void setValues(PreparedStatement ps, int i) throws SQLException {
          setParameterValues(ps, batchValues.get(i), getInsertTypes());
        }
        @Override
        public int getBatchSize() {
          return batchValues.size();
        }
      });
}

代码示例来源:origin: cloudfoundry/uaa

public void addUsers(final Integer startIndex, final Integer size) throws Exception {
  jdbcTemplate.batchUpdate(INSERT_BARE_BONE_USER, new BatchPreparedStatementSetter() {
    @Override
    public void setValues(PreparedStatement ps, int i) throws SQLException {
      String userId = "user-"+(i+startIndex);
      int pos = 1;
      ps.setString(pos++, userId);
      ps.setString(pos++, userId);
      ps.setString(pos++, userId);
      ps.setString(pos++, userId + "@test.com");
      ps.setString(pos++, IdentityZoneHolder.get().getId());
    }
    @Override
    public int getBatchSize() {
      return size;
    }
  });
}

代码示例来源:origin: spring-projects/spring-framework

/**
 * Trigger any queued update operations to be added as a final batch.
 * @return an array of the number of rows affected by each statement
 */
public int[] flush() {
  if (this.parameterQueue.isEmpty()) {
    return new int[0];
  }
  int[] rowsAffected = getJdbcTemplate().batchUpdate(
      resolveSql(),
      new BatchPreparedStatementSetter() {
        @Override
        public int getBatchSize() {
          return parameterQueue.size();
        }
        @Override
        public void setValues(PreparedStatement ps, int index) throws SQLException {
          Object[] params = parameterQueue.removeFirst();
          newPreparedStatementSetter(params).setValues(ps);
        }
      });
  for (int rowCount : rowsAffected) {
    checkRowsAffected(rowCount);
    if (this.trackRowsAffected) {
      this.rowsAffected.add(rowCount);
    }
  }
  return rowsAffected;
}

代码示例来源:origin: cloudfoundry/uaa

public void addApprovals(final Integer minUserId, final Integer maxUserId, final Integer countPerUser) throws Exception {
  jdbcTemplate.batchUpdate("insert into authz_approvals (user_id, client_id, scope, expiresat, status, lastmodifiedat) values (?,?,?,?,?,?)", new BatchPreparedStatementSetter() {
    @Override
    public void setValues(PreparedStatement ps, int i) throws SQLException {
      int index = (i+minUserId) / countPerUser;
      String userId = "user-"+(minUserId+index);
      int pos = 1;
      ps.setString(pos++, userId);
      ps.setString(pos++, "c"+random.nextInt(200));
      ps.setString(pos++, "uaa.user."+i);
      ps.setTimestamp(pos++, new Timestamp(System.currentTimeMillis()+300000));
      ps.setString(pos++, "APPROVED");
      ps.setTimestamp(pos++, new Timestamp(System.currentTimeMillis()));
    }
    @Override
    public int getBatchSize() {
      return (maxUserId - minUserId) * countPerUser;
    }
  });
}

代码示例来源:origin: spring-projects/spring-framework

@Test
public void testBatchUpdateWithEmptyList() throws Exception {
  final String sql = "UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = ?";
  JdbcTemplate template = new JdbcTemplate(this.dataSource, false);
  int[] actualRowsAffected = template.batchUpdate(sql, Collections.emptyList());
  assertTrue("executed 0 updates", actualRowsAffected.length == 0);
}

代码示例来源:origin: spring-projects/spring-framework

@Test
public void testBatchUpdate() throws Exception {
  final String[] sql = {"UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = 1",
      "UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = 2"};
  given(this.statement.executeBatch()).willReturn(new int[] {1, 1});
  mockDatabaseMetaData(true);
  given(this.connection.createStatement()).willReturn(this.statement);
  JdbcTemplate template = new JdbcTemplate(this.dataSource, false);
  int[] actualRowsAffected = template.batchUpdate(sql);
  assertTrue("executed 2 updates", actualRowsAffected.length == 2);
  verify(this.statement).addBatch(sql[0]);
  verify(this.statement).addBatch(sql[1]);
  verify(this.statement).close();
  verify(this.connection, atLeastOnce()).close();
}

代码示例来源:origin: spring-projects/spring-framework

@Test
public void testBatchUpdateWithCollectionOfObjects() throws Exception {
  final String sql = "UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = ?";
  final List<Integer> ids = Arrays.asList(100, 200, 300);
  final int[] rowsAffected1 = new int[] {1, 2};
  final int[] rowsAffected2 = new int[] {3};
  given(this.preparedStatement.executeBatch()).willReturn(rowsAffected1, rowsAffected2);
  mockDatabaseMetaData(true);
  ParameterizedPreparedStatementSetter<Integer> setter = (ps, argument) -> ps.setInt(1, argument.intValue());
  JdbcTemplate template = new JdbcTemplate(this.dataSource, false);
  int[][] actualRowsAffected = template.batchUpdate(sql, ids, 2, setter);
  assertEquals("executed 2 updates", 2, actualRowsAffected[0].length);
  assertEquals(rowsAffected1[0], actualRowsAffected[0][0]);
  assertEquals(rowsAffected1[1], actualRowsAffected[0][1]);
  assertEquals(rowsAffected2[0], actualRowsAffected[1][0]);
  verify(this.preparedStatement, times(3)).addBatch();
  verify(this.preparedStatement).setInt(1, ids.get(0));
  verify(this.preparedStatement).setInt(1, ids.get(1));
  verify(this.preparedStatement).setInt(1, ids.get(2));
  verify(this.preparedStatement).close();
  verify(this.connection, atLeastOnce()).close();
}

代码示例来源:origin: spring-projects/spring-framework

@Test
public void testBatchUpdateWithListOfObjectArrays() throws Exception {
  final String sql = "UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = ?";
  final List<Object[]> ids = new ArrayList<>(2);
  ids.add(new Object[] {100});
  ids.add(new Object[] {200});
  final int[] rowsAffected = new int[] {1, 2};
  given(this.preparedStatement.executeBatch()).willReturn(rowsAffected);
  mockDatabaseMetaData(true);
  JdbcTemplate template = new JdbcTemplate(this.dataSource, false);
  int[] actualRowsAffected = template.batchUpdate(sql, ids);
  assertTrue("executed 2 updates", actualRowsAffected.length == 2);
  assertEquals(rowsAffected[0], actualRowsAffected[0]);
  assertEquals(rowsAffected[1], actualRowsAffected[1]);
  verify(this.preparedStatement, times(2)).addBatch();
  verify(this.preparedStatement).setObject(1, 100);
  verify(this.preparedStatement).setObject(1, 200);
  verify(this.preparedStatement).close();
  verify(this.connection, atLeastOnce()).close();
}

代码示例来源:origin: spring-projects/spring-framework

@Test
public void testBatchUpdateWithBatchFailure() throws Exception {
  final String[] sql = {"A", "B", "C", "D"};
  given(this.statement.executeBatch()).willThrow(
      new BatchUpdateException(new int[] {1, Statement.EXECUTE_FAILED, 1, Statement.EXECUTE_FAILED}));
  mockDatabaseMetaData(true);
  given(this.connection.createStatement()).willReturn(this.statement);
  JdbcTemplate template = new JdbcTemplate(this.dataSource, false);
  try {
    template.batchUpdate(sql);
  }
  catch (UncategorizedSQLException ex) {
    assertThat(ex.getSql(), equalTo("B; D"));
  }
}

代码示例来源:origin: spring-projects/spring-framework

@Test
public void testBatchUpdateWithListOfObjectArraysPlusTypeInfo() throws Exception {
  final String sql = "UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = ?";
  final List<Object[]> ids = new ArrayList<>(2);
  ids.add(new Object[] {100});
  ids.add(new Object[] {200});
  final int[] sqlTypes = new int[] {Types.NUMERIC};
  final int[] rowsAffected = new int[] {1, 2};
  given(this.preparedStatement.executeBatch()).willReturn(rowsAffected);
  mockDatabaseMetaData(true);
  this.template = new JdbcTemplate(this.dataSource, false);
  int[] actualRowsAffected = this.template.batchUpdate(sql, ids, sqlTypes);
  assertTrue("executed 2 updates", actualRowsAffected.length == 2);
  assertEquals(rowsAffected[0], actualRowsAffected[0]);
  assertEquals(rowsAffected[1], actualRowsAffected[1]);
  verify(this.preparedStatement, times(2)).addBatch();
  verify(this.preparedStatement).setObject(1, 100, sqlTypes[0]);
  verify(this.preparedStatement).setObject(1, 200, sqlTypes[0]);
  verify(this.preparedStatement).close();
  verify(this.connection, atLeastOnce()).close();
}

代码示例来源:origin: spring-projects/spring-framework

@Test
public void testBatchUpdateWithNoBatchSupport() throws Exception {
  final String[] sql = {"UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = 1",
      "UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = 2"};
  given(this.statement.execute(sql[0])).willReturn(false);
  given(this.statement.getUpdateCount()).willReturn(1, 1);
  given(this.statement.execute(sql[1])).willReturn(false);
  mockDatabaseMetaData(false);
  given(this.connection.createStatement()).willReturn(this.statement);
  JdbcTemplate template = new JdbcTemplate(this.dataSource, false);
  int[] actualRowsAffected = template.batchUpdate(sql);
  assertTrue("executed 2 updates", actualRowsAffected.length == 2);
  verify(this.statement, never()).addBatch(anyString());
  verify(this.statement).close();
  verify(this.connection, atLeastOnce()).close();
}

代码示例来源:origin: spring-projects/spring-framework

@Test
public void testBatchUpdateWithPreparedStatementAndNoBatchSupport() throws Exception {
  final String sql = "UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = ?";
  final int[] ids = new int[] {100, 200};
  final int[] rowsAffected = new int[] {1, 2};
  given(this.preparedStatement.executeUpdate()).willReturn(rowsAffected[0], rowsAffected[1]);
  BatchPreparedStatementSetter setter = new BatchPreparedStatementSetter() {
    @Override
    public void setValues(PreparedStatement ps, int i) throws SQLException {
      ps.setInt(1, ids[i]);
    }
    @Override
    public int getBatchSize() {
      return ids.length;
    }
  };
  int[] actualRowsAffected = this.template.batchUpdate(sql, setter);
  assertTrue("executed 2 updates", actualRowsAffected.length == 2);
  assertEquals(rowsAffected[0], actualRowsAffected[0]);
  assertEquals(rowsAffected[1], actualRowsAffected[1]);
  verify(this.preparedStatement, never()).addBatch();
  verify(this.preparedStatement).setInt(1, ids[0]);
  verify(this.preparedStatement).setInt(1, ids[1]);
  verify(this.preparedStatement).close();
  verify(this.connection).close();
}

代码示例来源:origin: spring-projects/spring-framework

@Test
public void testBatchUpdateWithNoBatchSupportAndSelect() throws Exception {
  final String[] sql = {"UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = 1",
      "SELECT * FROM NOSUCHTABLE"};
  given(this.statement.execute(sql[0])).willReturn(false);
  given(this.statement.getUpdateCount()).willReturn(1);
  given(this.statement.execute(sql[1])).willReturn(true);
  mockDatabaseMetaData(false);
  given(this.connection.createStatement()).willReturn(this.statement);
  JdbcTemplate template = new JdbcTemplate(this.dataSource, false);
  this.thrown.expect(InvalidDataAccessApiUsageException.class);
  try {
    template.batchUpdate(sql);
  }
  finally {
    verify(this.statement, never()).addBatch(anyString());
    verify(this.statement).close();
    verify(this.connection, atLeastOnce()).close();
  }
}

代码示例来源:origin: spring-projects/spring-framework

@Test
public void testBatchUpdateWithPreparedStatement() throws Exception {
  final String sql = "UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = ?";
  final int[] ids = new int[] {100, 200};
  final int[] rowsAffected = new int[] {1, 2};
  given(this.preparedStatement.executeBatch()).willReturn(rowsAffected);
  mockDatabaseMetaData(true);
  BatchPreparedStatementSetter setter = new BatchPreparedStatementSetter() {
    @Override
    public void setValues(PreparedStatement ps, int i) throws SQLException {
      ps.setInt(1, ids[i]);
    }
    @Override
    public int getBatchSize() {
      return ids.length;
    }
  };
  JdbcTemplate template = new JdbcTemplate(this.dataSource, false);
  int[] actualRowsAffected = template.batchUpdate(sql, setter);
  assertTrue("executed 2 updates", actualRowsAffected.length == 2);
  assertEquals(rowsAffected[0], actualRowsAffected[0]);
  assertEquals(rowsAffected[1], actualRowsAffected[1]);
  verify(this.preparedStatement, times(2)).addBatch();
  verify(this.preparedStatement).setInt(1, ids[0]);
  verify(this.preparedStatement).setInt(1, ids[1]);
  verify(this.preparedStatement).close();
  verify(this.connection, atLeastOnce()).close();
}

代码示例来源:origin: spring-projects/spring-framework

int[] actualRowsAffected = template.batchUpdate(sql, setter);
assertTrue("executed 2 updates", actualRowsAffected.length == 2);
assertEquals(rowsAffected[0], actualRowsAffected[0]);

代码示例来源:origin: spring-projects/spring-framework

int[] actualRowsAffected = template.batchUpdate(sql, setter);
assertTrue("executed 2 updates", actualRowsAffected.length == 2);
assertEquals(rowsAffected[0], actualRowsAffected[0]);

代码示例来源:origin: spring-projects/spring-framework

@Test
public void testBatchUpdateFails() throws Exception {
  final String sql = "UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = ?";
  final int[] ids = new int[] {100, 200};
  SQLException sqlException = new SQLException();
  given(this.preparedStatement.executeBatch()).willThrow(sqlException);
  mockDatabaseMetaData(true);
  BatchPreparedStatementSetter setter = new BatchPreparedStatementSetter() {
    @Override
    public void setValues(PreparedStatement ps, int i) throws SQLException {
      ps.setInt(1, ids[i]);
    }
    @Override
    public int getBatchSize() {
      return ids.length;
    }
  };
  this.thrown.expect(DataAccessException.class);
  this.thrown.expect(exceptionCause(sameInstance(sqlException)));
  try {
    this.template.batchUpdate(sql, setter);
  }
  finally {
    verify(this.preparedStatement, times(2)).addBatch();
    verify(this.preparedStatement).setInt(1, ids[0]);
    verify(this.preparedStatement).setInt(1, ids[1]);
    verify(this.preparedStatement).close();
    verify(this.connection, atLeastOnce()).close();
  }
}

代码示例来源:origin: spring-projects/spring-framework

int[] actualRowsAffected = template.batchUpdate(sql, setter);
assertTrue("executed 2 updates", actualRowsAffected.length == 2);
assertEquals(rowsAffected[0], actualRowsAffected[0]);

相关文章