jdbctemplate的batchUpdate使用方法

1.Insert a batch of SQL Inserts together.

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;

public int[] batchInsert(List<Book> books) {

    return this.jdbcTemplate.batchUpdate("insert into books (name, price) values(?,?)",
     new BatchPreparedStatementSetter() {
        public void setValues(PreparedStatement ps, int i) throws SQLException {
          ps.setString(
1, books.get(i).getName());           ps.setBigDecimal(2, books.get(i).getPrice());         }         public int getBatchSize() {           return books.size();         }     });
}

2.If the batch is too big, we can split it by a smaller batch size

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ParameterizedPreparedStatementSetter;

public
int[][] batchInsert(List<Book> books, int batchSize) { int[][] updateCounts = jdbcTemplate.batchUpdate( "insert into books (name, price) values(?,?)", books, batchSize, new ParameterizedPreparedStatementSetter<Book>() { public void setValues(PreparedStatement ps, Book argument) throws SQLException { ps.setString(1, argument.getName()); ps.setBigDecimal(2, argument.getPrice()); } }); return updateCounts; }

3.With @Transactional, any failure causes the entire operation to roll back, none of the books will be added.

@Transactional
public int[][] batchInsert(List<Book> books, int batchSize) {
        int[][] updateCounts = jdbcTemplate.batchUpdate(
                "insert into books (name, price) values(?,?)",
                books,
                batchSize,
                new ParameterizedPreparedStatementSetter<Book>() {
                    public void setValues(PreparedStatement ps, Book argument) throws SQLException {
                        ps.setString(1, argument.getName());
                        ps.setBigDecimal(2, argument.getPrice());
                    }
                });
        return updateCounts;
 }

4.batchUpdate(String[] sql)

  (1) jdbcTemplate.batchUpdate(sql);

  (2) List<String> sqlList= new ArrayList<String>();

    jdbcTemplate.batchUpdate(sqlList.toArray(new String[sqlList.size()]));

猜你喜欢

转载自www.cnblogs.com/rookie-ray/p/11790612.html
今日推荐