Spring JdbcTemplate batchUpdate() 实例

在某些情况下,可能需要将一批记录插入到数据库中。如果你对每条记录调用一个插件的方法,SQL语句将被重复编译,造成系统缓慢进行。
在上述情况下,你可以使用 JdbcTemplate BATCHUPDATE()方法来执行批量插入操作。用这种方法,该语句只被编译一次,执行多次。
详见 JdbcTemplate 类的 BATCHUPDATE()示例。
//insert batch example
public void insertBatch(final List customers){

String sql = "INSERT INTO CUSTOMER " +
"(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";

getJdbcTemplate().batchUpdate(sql, new BatchPreparedStatementSetter() {

@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
    Customer customer = customers.get(i);
    ps.setLong(1, customer.getCustId());
    ps.setString(2, customer.getName());
    ps.setInt(3, customer.getAge() );
}
        
@Override
public int getBatchSize() {
    return customers.size();
}

});
}
或者,可以直接执行SQL。
//insert batch example with SQL
public void insertBatchSQL(final String sql){

getJdbcTemplate().batchUpdate(new String[]{sql});

}
Spring 的 bean 配置文件
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">


    




    
    
    
    


执行它

package com.yiibai.common;

import java.util.ArrayList;
import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.yiibai.customer.dao.CustomerDAO;
import com.yiibai.customer.model.Customer;

public class App
{
public static void main( String[] args )
{
ApplicationContext context =
new ClassPathXmlApplicationContext("Spring-Customer.xml");

    CustomerDAO customerDAO = (CustomerDAO) context.getBean("customerDAO");
    Customer customer1 = new Customer(1, "yiibai1",21);
    Customer customer3 = new Customer(2, "yiibai2",22);
    Customer customer2 = new Customer(3, "yiibai3",23);

    Listcustomers = new ArrayList();
    customers.add(customer1);
    customers.add(customer2);
    customers.add(customer3);
    
    customerDAO.insertBatch(customers);

    String sql = "UPDATE CUSTOMER SET NAME ='BATCHUPDATE'";
    customerDAO.insertBatchSQL(sql);
  
}

}

你可能感兴趣的:(Spring JdbcTemplate batchUpdate() 实例)