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を使ったバルクインサートの実装が完了です。
データベースへの大量データの挿入が効率的に行えるようになります。