コーステーブルの操作

JavaScriptBeginner
オンラインで実践に進む

はじめに

このプロジェクトでは、MyBatis を使用してコーステーブルに対して様々な操作を行う方法を学びます。これには、コース情報の照会、コース担当教員の更新、コースデータのバッチ照会などが含まれます。

👀 プレビュー

コーステーブル照会例

MyBatis のダイナミック SQL 例

バッチ照会例

🎯 タスク

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

  • ダイナミック SQL を使用して、コース名が大文字の「C」で始まるコース情報を照会する方法
  • ダイナミック SQL を使用して、特定のコースの担当教員を更新し、他のコースは変更しない方法
  • ダイナミック SQL を使用して、コース番号のリストでコース情報をバッチ照会する方法

🏆 成果

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

  • MyBatis の入力および出力パラメータを使用する
  • MyBatis でダイナミック SQL を実装する
  • 結果マッピングを使用して結果セットのマッピングを指定する
  • バッチ照会に <foreach> タグを使用する

コース情報の照会

このステップでは、ダイナミック SQL を使用して、コース名が大文字の「C」で始まるコース情報を照会する方法を学びます。

  1. /org/lanqiao/mapper/ ディレクトリにある CourseMapper.java ファイルを開きます。
  2. CourseMapper インターフェイスに selectCourses メソッドを実装します。このメソッドは、入力パラメータを保持するために Map<String, Object> パラメータを受け取る必要があります。
List<Course> selectCourses(Map<String, Object> params);
  1. /org/lanqiao/mapper/ ディレクトリにある CourseMapper.xml ファイルを開きます。
  2. CourseMapper 名前空間に selectCourses SQL 文を実装します。ダイナミック SQL を使用して、courseName パラメータが空であるかどうかを確認します。空でない場合は、大文字の「C」で始まるコース名をフィルタリングする条件を追加します。
<select id="selectCourses" resultMap="courseResultMap" parameterType="java.util.Map">
    SELECT * FROM course
    <where>
        <if test="courseName!= null and courseName!= ''">
            AND cName LIKE #{courseName}
        </if>
    </where>
</select>
  1. CourseMapper.xml ファイルに courseResultMap を定義して、結果セットのマッピングを指定します。
<resultMap id="courseResultMap" type="org.lanqiao.pojo.Course">
    <id property="cNo" column="cNo"/>
    <result property="cName" column="cName"/>
    <result property="teacher" column="teacher"/>
</resultMap>
  1. /org/lanqiao/test/ ディレクトリにある MyBatisTest.java ファイルを開きます。
  2. testSelectCourses テストメソッドを実装して、selectCourses 機能をテストします。
@Test
public void testSelectCourses() {
    CourseMapper mapper = session.getMapper(CourseMapper.class);
    Map<String, Object> params = new HashMap<>();
    params.put("courseName", "C%");
    List<Course> courses = mapper.selectCourses(params);
    System.out.println(courses);
}

コース担当教員を更新する

このステップでは、ダイナミック SQL を使用して、コース番号「7」のコースの担当教員を「Blue」に更新する方法を学びます。

  1. /org/lanqiao/mapper/ ディレクトリにある CourseMapper.java ファイルを開きます。
  2. CourseMapper インターフェイスに updateTeacher メソッドを実装します。このメソッドは、入力パラメータを保持するために Map<String, Object> パラメータを受け取る必要があります。
void updateTeacher(Map<String, Object> params);
  1. /org/lanqiao/mapper/ ディレクトリにある CourseMapper.xml ファイルを開きます。
  2. CourseMapper 名前空間に updateTeacher SQL 文を実装します。ダイナミック SQL を使用して、teacherName パラメータが空であるかどうかを確認します。空でない場合は、指定された courseId のコースの teacher 列を更新します。
<update id="updateTeacher" parameterType="java.util.Map">
    UPDATE course
    <set>
        <if test="teacherName!= null and teacherName!= ''">
            teacher = #{teacherName},
        </if>
    </set>
    WHERE cNo = #{courseId}
</update>
  1. /org/lanqiao/test/ ディレクトリにある MyBatisTest.java ファイルを開きます。
  2. testUpdateTeacher テストメソッドを実装して、updateTeacher 機能をテストします。
@Test
public void testUpdateTeacher() {
    CourseMapper mapper = session.getMapper(CourseMapper.class);
    Map<String, Object> params = new HashMap<>();
    params.put("courseId", 7);
    params.put("teacherName", " Blue");
    mapper.updateTeacher(params);
    session.commit();
}

コース情報のバッチ照会

このステップでは、ダイナミック SQL を使用して、コース番号「1,2,3」のコース情報をバッチ照会する方法を学びます。

  1. /org/lanqiao/mapper/ ディレクトリにある CourseMapper.java ファイルを開きます。
  2. CourseMapper インターフェイスに selectCoursesByIds メソッドを実装します。このメソッドは、入力パラメータを保持するために Map<String, Object> パラメータを受け取る必要があります。
List<Map<String, Object>> selectCoursesByIds(Map<String, Object> params);
  1. /org/lanqiao/mapper/ ディレクトリにある CourseMapper.xml ファイルを開きます。
  2. CourseMapper 名前空間に selectCoursesByIds SQL 文を実装します。<foreach> タグを使用して ids リストを反復処理し、IN 句を構築します。
<select id="selectCoursesByIds" resultMap="courseResultMap" parameterType="java.util.Map">
    SELECT * FROM course WHERE cNo IN
    <foreach collection="ids" item="id" open="(" separator="," close=")">
        #{id}
    </foreach>
</select>
  1. /org/lanqiao/test/ ディレクトリにある MyBatisTest.java ファイルを開きます。
  2. testSelectCoursesByIds テストメソッドを実装して、selectCoursesByIds 機能をテストします。
@Test
public void testSelectCoursesByIds() {
    CourseMapper mapper = session.getMapper(CourseMapper.class);
    List<Integer> ids = Arrays.asList(1, 2, 3);
    Map<String, Object> params = new HashMap<>();
    params.put("ids", ids);
    List<Map<String, Object>> coursesByIds = mapper.selectCoursesByIds(params);
    System.out.println(coursesByIds);
}

実行

コードが正常に動作することを確認するには、コードに関連するクラスを導入することに注意してください。

CourseMapper.java:

import org.lanqiao.pojo.Course;
import java.util.List;
import java.util.Map;

MyBatisTest.java:

import java.util.Arrays;
import java.util.HashMap;

最後に、次のコマンドを使用して、ターミナルでコードをコンパイルして実行し、Maven を使用してテストファイルを確認できます。

cd MyBatisCourseDemo03
mvn test

実行結果のレンダリングについては、「👀 プレビュー」を参照してください。

まとめ

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

✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習