Mybatisでbulkinsertを実装

Mybatisでbulkinsertを実装

MyBatisでのバルクインサートを実装するには、以下の手順を参考にしてください。
SpringBoot 3.xのプロジェクトでMyBatisを使用していることを前提に説明します。

1. SQLスクリプトの準備

バルクインサート用のSQLスクリプトを作成します。
以下のように、MyBatisのforeachタグを使用して、複数のレコードを一度に挿入するSQL文を記述します。

<!-- resources/mapper/YourMapper.xml -->
<insert id="bulkInsert" parameterType="java.util.List">
    INSERT INTO your_table (column1, column2, column3)
    VALUES
    <foreach collection="list" item="item" separator=",">
        (#{item.column1}, #{item.column2}, #{item.column3})
    </foreach>
</insert>

2. Mapperインターフェースの作成

次に、対応するMapperインターフェースを作成します。

// src/main/java/com/yourpackage/mapper/YourMapper.java
package com.yourpackage.mapper;

import com.yourpackage.model.YourModel;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface YourMapper {
    void bulkInsert(@Param("list") List<YourModel> list);
}

3. サービスの実装

サービス層でバルクインサートを呼び出します。

// src/main/java/com/yourpackage/service/YourService.java
package com.yourpackage.service;

import com.yourpackage.mapper.YourMapper;
import com.yourpackage.model.YourModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class YourService {

    @Autowired
    private YourMapper yourMapper;

    public void bulkInsert(List<YourModel> list) {
        yourMapper.bulkInsert(list);
    }
}

4. コントローラーの作成

最後に、エンドポイントを提供するコントローラーを作成します。

// src/main/java/com/yourpackage/controller/YourController.java
package com.yourpackage.controller;

import com.yourpackage.model.YourModel;
import com.yourpackage.service.YourService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api")
public class YourController {

    @Autowired
    private YourService yourService;

    @PostMapping("/bulkinsert")
    public void bulkInsert(@RequestBody List<YourModel> list) {
        yourService.bulkInsert(list);
    }
}

5. モデルクラスの作成

バルクインサート対象のモデルクラスを作成します。

// src/main/java/com/yourpackage/model/YourModel.java
package com.yourpackage.model;

public class YourModel {
    private String column1;
    private String column2;
    private String column3;

    // Getters and setters
}

注意点

  • トランザクション管理を行いたい場合は、@Transactionalアノテーションをサービスメソッドに付与してください。
  • MyBatisの設定やデータベース接続の設定が正しく行われていることを確認してください。

これで、MyBatisを使ったバルクインサートの実装が完了です。
データベースへの大量データの挿入が効率的に行えるようになります。