Springバッチの例 - MySQLデータベースからXMLへ

Spring Batchの例– MySQLデータベースからXML

このチュートリアルでは、JdbcCursorItemReaderJdbcPagingItemReaderを使用してMySQLデータベースからデータを読み取り、それをXMLファイルに書き込む方法を示します。

使用するツールとライブラリ

  1. メーベン3

  2. Eclipse 4.2

  3. JDK 1.6

  4. Spring Core 3.2.2.RELEASE

  5. Spring OXM 3.2.2.RELEASE

  6. Spring Batch 2.2.0.RELEASE

  7. MySQL Javaドライバー5.1.25

P.S This example – MySQL jdbc (reader) – XML (writer).

1. プロジェクトのディレクトリ構造

最終的なプロジェクト構造、標準のMavenプロジェクトを確認します。

spring batch database to xml

2. データベース

「users」テーブルには、5つのレコードのみが含まれ、後でjdbcで読み取ります。

ユーザーテーブル

id, user_login, password, age

'1','example','password','30'
'2','user_a','password','25'
'3','user_b','password','10'
'4','user_c','password','25'
'5','user_d','password','40'

3. アイテムリーダー

データベース値を「ユーザー」オブジェクトにマップする行マッパーを作成します。

User.java

package com.example;

public class User {

    int id;
    String username;
    String password;
    int age;

    //... getter and setter methods

}

UserRowMapper.java

package com.example;

import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.jdbc.core.RowMapper;

public class UserRowMapper implements RowMapper {

    @Override
    public User mapRow(ResultSet rs, int rowNum) throws SQLException {

        User user = new User();

        user.setId(rs.getInt("id"));
        user.setUsername(rs.getString("user_login"));
        user.setPassword(rs.getString("user_pass"));
        user.setAge(rs.getInt("age"));

        return user;
    }

}

データベースからデータを読み取る例。

job.xml

  
    
    
    
        
    
  

大きなレコードの場合は、JdbcPagingItemReaderを使用できます。

job.xml

  
    
    
      
        
        
        
        
        
      
    
    
       
        
       
    
    
    
        
    
  

4. アイテムライター

データをXMLファイルに書き込みます。

job.xml

    
        
        
        
    

    
        
            
                
            
        
    

5. 春のバッチジョブ

MySQLからデータを読み取り、XMLファイルに書き込むジョブ。

resources/spring/batch/jobs/job-extract-users.xml



  
  

  
    
    
    
        
    
  

  
    
      
        
      
    
  

  
    
    
    
  

  
    
        
            
        
    
  

resources/spring/batch/config/database.xml



        
    
        
        
        
        
    

    

6. それを実行します

Javaクラスを作成し、バッチジョブを実行します。

App.java

package com.example;

import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {

  public static void main(String[] args) {
    App obj = new App();
    obj.run();
  }

  private void run() {

    String[] springConfig = { "spring/batch/jobs/job-extract-users.xml" };

    ApplicationContext context = new ClassPathXmlApplicationContext(springConfig);

    JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
    Job job = (Job) context.getBean("testJob");

    try {

        JobParameters param = new JobParametersBuilder().addString("age", "20").toJobParameters();

        JobExecution execution = jobLauncher.run(job, param);
        System.out.println("Exit Status : " + execution.getStatus());
        System.out.println("Exit Status : " + execution.getAllFailureExceptions());

    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println("Done");

  }

}

出力。 すべての「年齢> 20歳のユーザー」をXMLファイルに抽出します。

xml/outputs/users.xml


    
        1
        example
        password
        30
    
    
        2
        user_a
        password
        25
    
    
        4
        user_c
        password
        25
    
    
        5
        user_d
        password
        40
    

ソースコードをダウンロード

ダウンロード–SpringBatch-MySQL-XML-Example.zip(22 kb)