`
RAYFUXK
  • 浏览: 213917 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Spring JdbcTemplate.batchUpdate 例子

阅读更多

最近再看开源项目阿里巴巴的数据库同步项目Otter https://github.com/alibaba/otter的时候,看到里面很多时候都使用了JdbcTemplate 来对数据进行相应的数据操作。

这里写一个使用批操作的batchUpdate()的例子,来自spring-jdbctemplate-batchupdate-example

 

需要使用批操作来操作数据库的数据。

第一种用法:

//insert batch example
public void insertBatch(final List<Customer> 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的配置文件

 

<beans xmlns="http://www.springframework.org/schema/beans"
 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">

 <bean id="customerDAO" class="com.mkyong.customer.dao.impl.JdbcCustomerDAO">
  <property name="dataSource" ref="dataSource" />
 </bean>
 
 <bean id="dataSource" 
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">

  <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  <property name="url" value="jdbc:mysql://localhost:3306/mkyongjava" />
  <property name="username" value="root" />
  <property name="password" value="password" />
 </bean>
 
</beans>

运行:

 

package com.mkyong.common;

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

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.mkyong.customer.dao.CustomerDAO;
import com.mkyong.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, "mkyong1",21);
        Customer customer3 = new Customer(2, "mkyong2",22);
        Customer customer2 = new Customer(3, "mkyong3",23);
  
        List<Customer>customers = new ArrayList<Customer>();
        customers.add(customer1);
        customers.add(customer2);
        customers.add(customer3);
        
        customerDAO.insertBatch(customers);

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

 

 

分享到:
评论

相关推荐

    打印JdbcTemplate执行sql

    其中,`JdbcTemplate`是Spring JDBC模块的核心组件,为数据库操作提供了简单、灵活的API。这篇博客文章的标题"打印JdbcTemplate执行sql"主要涉及如何在使用`JdbcTemplate`时,追踪并打印出执行的SQL语句,这对于调试...

    使用Spring JDBCTemplate进行增删改查curd操作

    jdbcTemplate.batchUpdate(sql, batchArgs); } ``` 6. 防止SQL注入 JdbcTemplate使用PreparedStatement来执行SQL,自动防止SQL注入攻击,因为它会正确地转义参数值。 7. 错误处理 如果数据库操作失败,...

    spring mvc注解jdbctemplate

    然而,为了保证性能,需要注意合理使用批处理(batch processing)和连接池(connection pool)等技术,以及避免过度使用JdbcTemplate的查询方法,以免导致过多的数据库连接和资源消耗。 在实际项目中,我们还可以...

    SpringJDBC.rar_SpringJDBC_spring jdbc

    - 对于批量插入或更新,Spring JDBC提供了`batchUpdate()`方法,可以有效地提高性能。 5. **异常处理**: - Spring JDBC将JDBC的异常转换为Spring的`DataAccessException`家族,使得异常处理更加统一和简单。 6....

    JdbcTemplate的事务控制.docx

    在这个例子中,我们使用了`JdbcTemplate`的`batchUpdate`方法来进行批量更新操作,并且在调用该方法之前关闭了`Connection`对象的自动提交功能。如果在执行过程中发生了异常,比如主键冲突导致的插入失败,那么所有...

    Spring 中jdbcTemplate 实现执行多条sql语句示例

    首先,JdbcTemplate的`batchUpdate`方法是用于批量执行SQL语句的,如示例所示。在上述代码中,`batchUpdate`接收一个SQL语句的字符串数组,然后依次执行这些语句。例如,删除角色关联菜单的记录,接着插入新的关联...

    29、jdbcTemplate 教学1

    `jdbcTemplate`提供了多种方法,如`queryForObject()`, `queryForList()`, `update()`, `batchUpdate()`等,以满足各种数据库操作需求,如查询单行数据、多行数据、执行更新或插入操作。这些方法简化了异常处理,并...

    day39-Spring 17-Spring的JDBC模板:完成增删改的操作

    JdbcTemplate还支持批处理,通过`batchUpdate()`方法可以一次执行多条SQL语句,提高性能。 在实际项目中,结合使用JdbcTemplate和Spring的其他组件(如DAO层、Service层)可以构建出高效、稳定的数据库访问层。在...

    Spring JdbcDaoSupport 批量插入数据

    在`JdbcDaoSupport`中,我们可以通过`JdbcTemplate`的`batchUpdate(String sql, BatchPreparedStatementSetter setter)`方法来实现这个功能。`BatchPreparedStatementSetter`是一个接口,我们需要实现它的`setValues...

    Spring之SimpleJdbcTemplate的使用

    3. **批处理操作**:batchUpdate()方法支持批处理操作,一次提交多个SQL语句,提高数据库操作效率。 4. **参数绑定**:使用占位符?进行参数绑定,避免SQL注入风险。例如,`update("INSERT INTO table (name, age) ...

    使用Spring的SimpleJdbcTemplate完成DAO操作

    `SimpleJdbcTemplate`还提供了其他实用方法,如`queryForList`用于获取多个结果,`call`用于调用存储过程,以及`batchUpdate`用于执行批处理更新等。这些方法都极大地简化了数据库操作,降低了出错的可能性。 在...

    spring_JdbcTemplete使用详解

    - **void batchUpdate(String sql, List[]&gt; batchArgs)** 执行批量更新操作,用于处理大量数据的插入或更新。 ##### 2.3 其他常用方法 - **int execute(String sql, PreparedStatementCallback action)** 执行...

    Spring-JDBC,带一小例子

    7. **Batch Updates**: 支持批量SQL更新操作,通过`batchUpdate()`方法可以一次提交多条SQL语句,提高性能。 8. **CallableStatements**: 对于存储过程的调用,Spring-JDBC提供了CallableStatement的支持,可以使用...

    JdbcTemplateTool.zip

    Spring 出品的 JdbcTemplate 对于不想使用hibernate或者ibatis那样需要大量学习成本而且还想获得对象化的人来说是很好用的。但是 JdbcTemplate还是有很多不足之处或者说是缺点。比如你没法像hibernate那样直接传一个...

    小码农的代码(一)----------SpringJDBC的使用

    通过`JdbcTemplate`的`batchUpdate(String sql, BatchPreparedStatementSetter setter)`方法,我们可以批量执行插入、更新或删除操作。 总的来说,SpringJDBC通过提供强大的抽象和模板方法,使数据库操作变得简单而...

Global site tag (gtag.js) - Google Analytics