---
title: "SpringBatch 连接 OceanBase 数据库 - OceanBase 数据库 V4.2.1 | OceanBase 文档中心"
description: SpringBatch 连接 OceanBase 数据库 本文介绍 SpringBatch 连接示例。 环境配置 JDK1.8。 OceanBase 3.x（MySQL 模式/Oracle 模式）。 基于 spring-boot 集成 spring-batch。 配置依赖 &lt;dependency&gt; &lt;groupId&gt;…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.2.1 LTS

# SpringBatch 连接 OceanBase 数据库

更新时间：2026-04-16 00:11:35

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.2.1/zh-CN/300.develop/100.application-development-of-mysql-mode/200.sample-program-of-mysql-mode/100.java-of-mysql-mode/900.connect-to-the-oceanbase-database-through-spring-batch-of-mysql-mode.md)  

本文介绍 SpringBatch 连接示例。

## 环境配置

- JDK1.8。
 - OceanBase 3.x（MySQL 模式/Oracle 模式）。
 - 基于 spring-boot 集成 spring-batch。

## 配置依赖

```xml
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-batch</artifactId>
  </dependency>
  <!--数据库驱动-->
  <dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>8.0.25</version>
  </dependency>
  <!--连接池-->
  <dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid</artifactId>
   <version>1.1.22</version>
  </dependency>
  <!--基于实体类自动建表-->
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-jpa</artifactId>
  </dependency>

  <!--spring-boot核心等其他依赖省略。。。。-->

```

## 配置文件

```java
#yml文件：
spring:
  datasource:
    url: jdbc:mysql://10.100.xxx.xxx:18815/test
    driver-class-name: com.mysql.cj.jdbc.Driver
#    username: admin@mysql
    username: admin@oracle
    password: ******
  jpa:
    hibernate:
      ddl-auto: update

```

## 示例代码

通过调用数据库写入类方法写入数据，具体步骤如下：

1. 创建需要的类。

   实体类 : `People` 和 `PeopleDESC`。

   ```java
   //基本people类

   @Entity
   @Table(name = "PEOPLE")
   public class People {
       @Id
       @GeneratedValue
       private int id;
       private String lastName;
       private String firstName;
       //。。。。。。略
   }

   ```

   ```java
   //加工后的peopledesc类(增加desc属性)

   @Entity
   @Table(name = "OK_PEOPLE")
   public class PeopleDESC {

       @Id
       @GeneratedValue  //strategy = AUTO / IDENTITY / SEQUENCE  三种主键生成策略均不支持
       private int id;
       private String lastName;
       private String firstName;
       private String desc1;
       //。。。。。。略
   }

   ```

   批处理类：`AddPeopleDescProcessor` 和 `AddDescPeopleWriter`。

   ```java
   //用于给people添加desc属性返回一个peopledesc类的处理器

   public class AddPeopleDescProcessor implements ItemProcessor<People, PeopleDESC> {

       public PeopleDESC process(People item) throws Exception {

           return new PeopleDESC(item.getId() ,
                                 item.getLastName(),
                                 item.getFirstName(),
                                 Thread.currentThread().getName());
       }
   }

   ```
 2. 将 peopledesc 写入数据库的类。

   ```java
   //将peopledesc写入数据库的类

   public class AddDescPeopleWriter implements ItemWriter<PeopleDESC> {
       private JdbcTemplate jdbcTemplate;
       public void setDataSource(DataSource dataSource) {
           this.jdbcTemplate = new JdbcTemplate(dataSource);
       }

       public JdbcTemplate getJdbcTemplate() {
           return jdbcTemplate;
       }

       public void write(List<? extends PeopleDESC> items) throws Exception {
           for (PeopleDESC peopleDESC : items) {
               this.jdbcTemplate
                       .update("insert into ok_people (id,first_name,last_name,desc1) values (?, ?, ?, ?)",
                               peopleDESC.getId(), peopleDESC.getFirstName(),
                               peopleDESC.getLastName(), peopleDESC.getDesc());
           }
       }
   }

   ```
 3. 启动工程 `spring-data-jpa` 会根据实体类 `People` 及 `PeopleDESC` 自动建表，示例结果如下。

   ![SpringBatch 连接示例-1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V3.2.3/zh-CN/3.development-guide/4.database-design-specifications-and-practices/06.database-design-best-practices/02.development-framework-connection-database-example/02.springbatch-connection-example/SpringBatch%20%E8%BF%9E%E6%8E%A5%E7%A4%BA%E4%BE%8B1.png)
 4. 批量添加测试数据至 `people`。

   ```java
   public void addData(){
           jdbcTemplate = new JdbcTemplate(dataSource);
           StringBuilder stringBuilder = new StringBuilder("");
           for (int i = 1 ; i<=100 ; i++){
               stringBuilder.append("insert into people values ("+i+",'first_test"+i+"','last_test"+i+"');");
               jdbcTemplate.execute(stringBuilder.toString());
               stringBuilder.delete(0, stringBuilder.length());
           }
       }

   ```

   测试下结果，显示如下：

   ![SpringBatch 连接示例-2](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V3.2.3/zh-CN/3.development-guide/4.database-design-specifications-and-practices/06.database-design-best-practices/02.development-framework-connection-database-example/02.springbatch-connection-example/SpringBatch%20%E8%BF%9E%E6%8E%A5%E7%A4%BA%E4%BE%8B2.png)
 5. 执行批处理方法。

   ```java
    public void writerTest() throws Exception {
           //获得people表的结果集
           String sql = "select * from people;";
           preparedStatement = dataSource.getConnection().prepareStatement(sql);
           ResultSet resultSet = preparedStatement.executeQuery();
           List list = new ArrayList<PeopleDESC>();
           //基于添加desc属性的处理器对结果集进行加工，并封装成一个List<PeopleDESC>
           while (resultSet.next()){
               People people = peopleRowMapper.mapRow(resultSet, resultSet.getRow());
               PeopleDESC desc = addPeopleDescProcessor.process(people);
               list.add(desc);
           }
           //调用数据库写入类方法写入数据
           addDescPeopleWriter.setDataSource(dataSource);
           addDescPeopleWriter.write(list);
       }

   ```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
