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

🎯 タスク
このプロジェクトでは、以下を学びます。
- データベースサービスを起動し、
MyBatisDemoデータベースとcourseテーブルを作成する方法 MyBatisCourseDemoプロジェクトをセットアップする方法- MyBatis の
<foreach>タグを使ってコースデータの大量挿入を実装する方法
🏆 成果
このプロジェクトを完了すると、以下ができるようになります。
- MyBatis を使ってデータベースとやり取りすることができる
- MyBatis の
<foreach>タグを使って大量のデータ挿入を行うことができる - MyBatis を使って Java プロジェクトをセットアップして構成することができる
データベースサービスを起動し、コーステーブルを作成する
このステップでは、データベースサービスを起動し、MyBatisDemoデータベースを作成し、courseテーブルを作成し、初期データをインポートする方法を学びます。
- MySQL データベースサービスを起動する:
cd ~/project
sudo service mysql start
- SQL スクリプトを実行して
MyBatisDemoデータベースとcourseテーブルを作成する:
mysql -u root < ~/project/course.sql && rm course.sql
このコマンドは、~/project/course.sqlにある SQL スクリプトを実行して必要なデータベースとテーブルを作成します。スクリプトの実行後、course.sqlファイルが削除されます。
MyBatisCourseDemo プロジェクトをセットアップする
このステップでは、チャレンジを完了するための基礎として提供されるMyBatisCourseDemoプロジェクトをセットアップします。
- プロジェクトディレクトリに移動する:
cd ~/project/MyBatisCourseDemo/
コースデータの大量挿入を実装する
このステップでは、MyBatis の<foreach>タグを使って、コーススケジュールに次の 3 つのデータを一度に(大量に)追加します。
- コース ID:8、コース名:Golang 言語、担当教員:Amy
- コース ID:9、コース名:Oracle、担当教員:Bob
- コース ID:10、コース名:ビッグデータ、担当教員:Jone
/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);
}
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>
/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();
}
}
- テストケースを実行して解決策を検証する:
mvn test
出力結果は以下を参照のこと:

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



