MyBatisのバッチ挿入のいくつかの方法​

MyBatisには、複数の方法でバッチ挿入操作を実現することができます。

  1. foreach タグを使用する:
    Mapper XML ファイルで foreach タグを使い、コレクションを繰り返して一括挿入操作を実行します。以下は例示コードです:
  2. INSERT INTO my_table (column1, column2)
    VALUES

    (#{item.column1}, #{item.column2})

  3. ここでのリストは、データの挿入を含むコレクションです。
  4. Javaコード内でBatchExecutorバッチ実行器を使用して、バッチ挿入操作を実行します。例を以下に示します。
  5. SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
    try {
    MyMapper mapper = sqlSession.getMapper(MyMapper.class);
    for (MyObject obj : list) {
    mapper.insert(obj);
    }
    sqlSession.commit();
    } catch (Exception e) {
    sqlSession.rollback();
    } finally {
    sqlSession.close();
    }「SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
    try {
    MyMapper mapper = sqlSession.getMapper(MyMapper.class);
    for (MyObject obj : list) {
    mapper.insert(obj);
    }
    sqlSession.commit();
    } catch (Exception e) {
    sqlSession.rollback();
    } finally {
    sqlSession.close();
    }」
  6. ここにある list は、データの挿入が含まれるコレクションであり、MyObject は対応するテーブルのエンティティクラスです。
  7. JDBCを使用したバッチ処理:
    JDBCのバッチ処理を直接使用して、一括挿入操作を実行します。以下はコード例です:
  8. Connection connection = dataSource.getConnection();
    try {
    PreparedStatement ps = connection.prepareStatement(“INSERT INTO my_table (column1, column2) VALUES (?, ?)”);
    for (MyObject obj : list) {
    ps.setString(1, obj.getColumn1());
    ps.setString(2, obj.getColumn2());
    ps.addBatch();
    }
    ps.executeBatch();
    connection.commit();
    } catch (Exception e) {
    connection.rollback();
    } finally {
    connection.close();
    }コード中のdataSource.getConnection()によって接続が確立され、その後の処理でデータベースにINSERT文を実行し、最後に接続をクローズしています。
  9. ここでは、list はデータを挿入する集合であり、MyObject は対応するテーブルのエンティティクラスです。
bannerAds