コーススケジュールにデータを大量挿入する

JavaJavaBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このプロジェクトでは、人気のあるJava永続化フレームワークであるMyBatisを使って、コーススケジュールに大量にデータを挿入する方法を学びます。このプロジェクトでは、データベースのセットアップ、必要なテーブルの作成、大量挿入機能の実装のプロセスを案内します。

👀 プレビュー

MyBatis bulk insert preview

🎯 タスク

このプロジェクトでは、以下を学びます。

  • データベースサービスを起動し、MyBatisDemoデータベースとcourseテーブルを作成する方法
  • MyBatisCourseDemoプロジェクトをセットアップする方法
  • MyBatisの<foreach>タグを使ってコースデータの大量挿入を実装する方法

🏆 成果

このプロジェクトを完了すると、以下ができるようになります。

  • MyBatisを使ってデータベースとやり取りすることができる
  • MyBatisの<foreach>タグを使って大量のデータ挿入を行うことができる
  • MyBatisを使ってJavaプロジェクトをセットアップして構成することができる

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java(("Java")) -.-> java/ConcurrentandNetworkProgrammingGroup(["Concurrent and Network Programming"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java/DataStructuresGroup -.-> java/collections_methods("Collections Methods") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/jdbc("JDBC") java/FileandIOManagementGroup -.-> java/files("Files") java/FileandIOManagementGroup -.-> java/io("IO") java/ConcurrentandNetworkProgrammingGroup -.-> java/working("Working") subgraph Lab Skills java/collections_methods -.-> lab-300346{{"コーススケジュールにデータを大量挿入する"}} java/classes_objects -.-> lab-300346{{"コーススケジュールにデータを大量挿入する"}} java/jdbc -.-> lab-300346{{"コーススケジュールにデータを大量挿入する"}} java/files -.-> lab-300346{{"コーススケジュールにデータを大量挿入する"}} java/io -.-> lab-300346{{"コーススケジュールにデータを大量挿入する"}} java/working -.-> lab-300346{{"コーススケジュールにデータを大量挿入する"}} end

データベースサービスを起動してコーステーブルを作成する

このステップでは、データベースサービスを起動し、MyBatisDemoデータベースを作成し、courseテーブルを作成し、初期データをインポートする方法を学びます。

  1. MySQLデータベースサービスを起動する:
cd ~/project
sudo service mysql start
  1. SQLスクリプトを実行してMyBatisDemoデータベースとcourseテーブルを作成する:
mysql -u root < ~/project/course.sql && rm course.sql

このコマンドは、~/project/course.sqlにあるSQLスクリプトを実行して必要なデータベースとテーブルを作成します。スクリプトの実行後、course.sqlファイルが削除されます。

MyBatisCourseDemoプロジェクトをセットアップする

このステップでは、チャレンジを完了するための基礎として提供されるMyBatisCourseDemoプロジェクトをセットアップします。

  1. プロジェクトディレクトリに移動する:
cd ~/project/MyBatisCourseDemo/

コースデータの大量挿入を実装する

このステップでは、MyBatisの<foreach>タグを使って、コーススケジュールに次の3つのデータを一度に(大量に)追加します。

  • コースID:8、コース名:Golang言語、担当教員:Amy
  • コースID:9、コース名:Oracle、担当教員:Bob
  • コースID:10、コース名:ビッグデータ、担当教員:Jone
  1. /src/main/java/org/labex/mapper/ディレクトリ内のCourseMapper.javaファイルを開き、次のコードを追加します。
package org.labex.mapper;

import java.util.List;

import org.labex.pojo.Course;

public interface CourseMapper {
    void insertCourses(List<Course> courses);
}
  1. CourseMapper.xmlファイルを開き、次のコードを追加します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.labex.mapper.CourseMapper">
    <insert id="insertCourses" parameterType="java.util.List">
        INSERT INTO course (cNo, cName, teacher)
        VALUES
        <foreach collection="list" item="course" separator=",">
            (#{course.cNo}, #{course.cName}, #{course.teacher})
        </foreach>
    </insert>
</mapper>
  1. /src/test/java/org/labex/test/ディレクトリ内のMyBatisTest.javaファイルを開き、次のコードを追加します。
package org.labex.test;

import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import org.labex.mapper.CourseMapper;
import org.labex.pojo.Course;

public class MyBatisTest {

    SqlSessionFactory sessionFactory = null;
    SqlSession session = null;

    @Before
    public void before() throws IOException {
        String resource = "mybatis-config.xml";
        // MyBatisの設定ファイルを読み込む
        Reader reader = Resources.getResourceAsReader(resource);
        // SqlSessionFactoryを作成する
        sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        // マッピングファイルで定義されたSQL文を実行するためのSqlSessionオブジェクトを作成する
        session = sessionFactory.openSession();
    }

    @Test
    public void testInsertCourses() {
        // 挿入するCourseオブジェクトのリストを作成する
        List<Course> courses = new ArrayList<>();
        courses.add(new Course(8, "Golang言語", "Amy"));
        courses.add(new Course(9, "Oracle", "Bob"));
        courses.add(new Course(10, "ビッグデータ", "Jone"));

        // CourseMapperのインスタンスを取得する
        CourseMapper courseMapper = session.getMapper(CourseMapper.class);

        // コースのリストを使ってinsertCoursesメソッドを呼び出す
        courseMapper.insertCourses(courses);

        // トランザクションをコミットする
        session.commit();

        // セッションを閉じる
        session.close();
    }

}
  1. テストケースを実行して解決策を検証する:
mvn test

出力結果は以下を参照のこと:

未完成のテスト結果
✨ 解答を確認して練習

まとめ

おめでとうございます!このプロジェクトを完了しました。実力を向上させるために、LabExでさらに多くの実験を行って練習してください。