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



🎯 タスク
このプロジェクトでは、以下のことを学びます。
- ダイナミック SQL を使用して、コース名が大文字の「C」で始まるコース情報を照会する方法
- ダイナミック SQL を使用して、特定のコースの担当教員を更新し、他のコースは変更しない方法
- ダイナミック SQL を使用して、コース番号のリストでコース情報をバッチ照会する方法
🏆 成果
このプロジェクトを完了すると、以下のことができるようになります。
- MyBatis の入力および出力パラメータを使用する
- MyBatis でダイナミック SQL を実装する
- 結果マッピングを使用して結果セットのマッピングを指定する
- バッチ照会に
<foreach>タグを使用する
コース情報の照会
このステップでは、ダイナミック SQL を使用して、コース名が大文字の「C」で始まるコース情報を照会する方法を学びます。
/org/lanqiao/mapper/ディレクトリにあるCourseMapper.javaファイルを開きます。CourseMapperインターフェイスにselectCoursesメソッドを実装します。このメソッドは、入力パラメータを保持するためにMap<String, Object>パラメータを受け取る必要があります。
List<Course> selectCourses(Map<String, Object> params);
/org/lanqiao/mapper/ディレクトリにあるCourseMapper.xmlファイルを開きます。CourseMapper名前空間にselectCoursesSQL 文を実装します。ダイナミック 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>
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>
/org/lanqiao/test/ディレクトリにあるMyBatisTest.javaファイルを開きます。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」に更新する方法を学びます。
/org/lanqiao/mapper/ディレクトリにあるCourseMapper.javaファイルを開きます。CourseMapperインターフェイスにupdateTeacherメソッドを実装します。このメソッドは、入力パラメータを保持するためにMap<String, Object>パラメータを受け取る必要があります。
void updateTeacher(Map<String, Object> params);
/org/lanqiao/mapper/ディレクトリにあるCourseMapper.xmlファイルを開きます。CourseMapper名前空間にupdateTeacherSQL 文を実装します。ダイナミック 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>
/org/lanqiao/test/ディレクトリにあるMyBatisTest.javaファイルを開きます。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」のコース情報をバッチ照会する方法を学びます。
/org/lanqiao/mapper/ディレクトリにあるCourseMapper.javaファイルを開きます。CourseMapperインターフェイスにselectCoursesByIdsメソッドを実装します。このメソッドは、入力パラメータを保持するためにMap<String, Object>パラメータを受け取る必要があります。
List<Map<String, Object>> selectCoursesByIds(Map<String, Object> params);
/org/lanqiao/mapper/ディレクトリにあるCourseMapper.xmlファイルを開きます。CourseMapper名前空間にselectCoursesByIdsSQL 文を実装します。<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>
/org/lanqiao/test/ディレクトリにあるMyBatisTest.javaファイルを開きます。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 でさらに多くの実験を行ってみましょう。



