소개
이 프로젝트에서는 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파일을 엽니다.selectCourses기능을 테스트하기 위해testSelectCourses테스트 메서드를 구현합니다.
@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파일을 엽니다.updateTeacher기능을 테스트하기 위해testUpdateTeacher테스트 메서드를 구현합니다.
@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파일을 엽니다.selectCoursesByIds기능을 테스트하기 위해testSelectCoursesByIds테스트 메서드를 구현합니다.
@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
실행 결과는 👀 Preview를 참조하십시오.
요약
축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.



