Введение
В этом проекте вы научитесь использовать MyBatis для выполнения различных операций с таблицей курсов, включая запрос информации о курсах, обновление преподавателя курса и пакетный запрос данных о курсах.
👀 Предварительный просмотр



🎯 Задачи
В этом проекте вы научитесь:
- Запрашивать информацию о курсах, название которых начинается с заглавной буквы "C", с использованием динамического SQL
- Обновлять преподавателя курса для определенного курса, оставляя других неизменными, с использованием динамического SQL
- Пакетно запрашивать информацию о курсах с использованием списка номеров курсов, с использованием динамического SQL
🏆 Достижения
После завершения этого проекта вы сможете:
- Использовать входные и выходные параметры MyBatis
- Реализовать динамический SQL в MyBatis
- Использовать сопоставление результатов для указания сопоставления результирующего набора
- Использовать тег
<foreach>для пакетных запросов
Запросить информацию о курсе
В этом шаге вы научитесь запрашивать информацию о курсах, название которых начинается с заглавной буквы "C", с использованием динамического SQL.
Откройте файл
CourseMapper.java, расположенный в директории/org/lanqiao/mapper/.Реализуйте метод
selectCoursesв интерфейсеCourseMapper. Этот метод должен принимать параметрMap<String, Object>для хранения входных параметров.
List<Course> selectCourses(Map<String, Object> params);
Откройте файл
CourseMapper.xml, расположенный в директории/org/lanqiao/mapper/.Реализуйте SQL-оператор
selectCoursesв пространстве именCourseMapper. Используйте динамический 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>
- Определите
courseResultMapв файлеCourseMapper.xmlдля указания сопоставления результирующего набора.
<resultMap id="courseResultMap" type="org.lanqiao.pojo.Course">
<id property="cNo" column="cNo"/>
<result property="cName" column="cName"/>
<result property="teacher" column="teacher"/>
</resultMap>
Откройте файл
MyBatisTest.java, расположенный в директории/org/lanqiao/test/.Реализуйте тестовый метод
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);
}
Обновить преподавателя курса
В этом шаге вы научитесь обновлять преподавателя курса с номером курса "7" на "Blue" с использованием динамического SQL.
Откройте файл
CourseMapper.java, расположенный в директории/org/lanqiao/mapper/.Реализуйте метод
updateTeacherв интерфейсеCourseMapper. Этот метод должен принимать параметрMap<String, Object>для хранения входных параметров.
void updateTeacher(Map<String, Object> params);
Откройте файл
CourseMapper.xml, расположенный в директории/org/lanqiao/mapper/.Реализуйте SQL-оператор
updateTeacherв пространстве именCourseMapper. Используйте динамический SQL для проверки, является ли параметрteacherNameпустым. Если он не пуст, обновите столбецteacherдля курса с указаннымcourseId.
<update id="updateTeacher" parameterType="java.util.Map">
UPDATE course
<set>
<if test="teacherName!= null and teacherName!= ''">
teacher = #{teacherName},
</if>
</set>
WHERE cNo = #{courseId}
</update>
Откройте файл
MyBatisTest.java, расположенный в директории/org/lanqiao/test/.Реализуйте тестовый метод
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();
}
Пакетный запрос информации о курсах
В этом шаге вы научитесь пакетно запрашивать информацию о курсах с номерами курсов "1,2,3" с использованием динамического SQL.
Откройте файл
CourseMapper.java, расположенный в директории/org/lanqiao/mapper/.Реализуйте метод
selectCoursesByIdsв интерфейсеCourseMapper. Этот метод должен принимать параметрMap<String, Object>для хранения входных параметров.
List<Map<String, Object>> selectCoursesByIds(Map<String, Object> params);
Откройте файл
CourseMapper.xml, расположенный в директории/org/lanqiao/mapper/.Реализуйте SQL-оператор
selectCoursesByIdsв пространстве именCourseMapper. Используйте тег<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>
Откройте файл
MyBatisTest.java, расположенный в директории/org/lanqiao/test/.Реализуйте тестовый метод
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, чтобы улучшить свои навыки.



