Операции с таблицей курсов

JavaScriptJavaScriptBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

👀 Предварительный просмотр

Пример запроса таблицы курсов
Пример динамического SQL в MyBatis
Пример пакетного запроса

🎯 Задачи

В этом проекте вы научитесь:

  • Запрашивать информацию о курсах, название которых начинается с заглавной буквы "C", с использованием динамического SQL
  • Обновлять преподавателя курса для определенного курса, оставляя других неизменными, с использованием динамического SQL
  • Пакетно запрашивать информацию о курсах с использованием списка номеров курсов, с использованием динамического SQL

🏆 Достижения

После завершения этого проекта вы сможете:

  • Использовать входные и выходные параметры MyBatis
  • Реализовать динамический SQL в MyBatis
  • Использовать сопоставление результатов для указания сопоставления результирующего набора
  • Использовать тег <foreach> для пакетных запросов

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript(("JavaScript")) -.-> javascript/DOMManipulationGroup(["DOM Manipulation"]) javascript(("JavaScript")) -.-> javascript/NetworkingGroup(["Networking"]) javascript/BasicConceptsGroup -.-> javascript/obj_manip("Object Manipulation") javascript/AdvancedConceptsGroup -.-> javascript/error_handle("Error Handling") javascript/DOMManipulationGroup -.-> javascript/dom_select("DOM Selection") javascript/DOMManipulationGroup -.-> javascript/dom_manip("DOM Manipulation") javascript/DOMManipulationGroup -.-> javascript/dom_traverse("DOM Traversal") javascript/NetworkingGroup -.-> javascript/http_req("HTTP Requests") javascript/NetworkingGroup -.-> javascript/json("JSON") javascript/NetworkingGroup -.-> javascript/api_interact("API Interaction") subgraph Lab Skills javascript/obj_manip -.-> lab-300384{{"Операции с таблицей курсов"}} javascript/error_handle -.-> lab-300384{{"Операции с таблицей курсов"}} javascript/dom_select -.-> lab-300384{{"Операции с таблицей курсов"}} javascript/dom_manip -.-> lab-300384{{"Операции с таблицей курсов"}} javascript/dom_traverse -.-> lab-300384{{"Операции с таблицей курсов"}} javascript/http_req -.-> lab-300384{{"Операции с таблицей курсов"}} javascript/json -.-> lab-300384{{"Операции с таблицей курсов"}} javascript/api_interact -.-> lab-300384{{"Операции с таблицей курсов"}} end

Запрос информации о курсах

В этом шаге вы научитесь запрашивать информацию о курсах, название которых начинается с заглавной буквы "C", с использованием динамического SQL.

  1. Откройте файл CourseMapper.java, расположенный в директории /org/lanqiao/mapper/.

  2. Реализуйте метод selectCourses в интерфейсе CourseMapper. Этот метод должен принимать параметр Map<String, Object> для хранения входных параметров.

List<Course> selectCourses(Map<String, Object> params);
  1. Откройте файл CourseMapper.xml, расположенный в директории /org/lanqiao/mapper/.

  2. Реализуйте 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>
  1. Определите 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>
  1. Откройте файл MyBatisTest.java, расположенный в директории /org/lanqiao/test/.

  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);
}

Обновление преподавателя курса

В этом шаге вы научитесь обновлять преподавателя курса с номером курса "7" на "Blue" с использованием динамического SQL.

  1. Откройте файл CourseMapper.java, расположенный в директории /org/lanqiao/mapper/.

  2. Реализуйте метод updateTeacher в интерфейсе CourseMapper. Этот метод должен принимать параметр Map<String, Object> для хранения входных параметров.

void updateTeacher(Map<String, Object> params);
  1. Откройте файл CourseMapper.xml, расположенный в директории /org/lanqiao/mapper/.

  2. Реализуйте 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>
  1. Откройте файл MyBatisTest.java, расположенный в директории /org/lanqiao/test/.

  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();
}

Пакетный запрос информации о курсах

В этом шаге вы научитесь пакетно запрашивать информацию о курсах с номерами курсов "1,2,3" с использованием динамического SQL.

  1. Откройте файл CourseMapper.java, расположенный в директории /org/lanqiao/mapper/.

  2. Реализуйте метод selectCoursesByIds в интерфейсе CourseMapper. Этот метод должен принимать параметр Map<String, Object> для хранения входных параметров.

List<Map<String, Object>> selectCoursesByIds(Map<String, Object> params);
  1. Откройте файл CourseMapper.xml, расположенный в директории /org/lanqiao/mapper/.

  2. Реализуйте 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>
  1. Откройте файл MyBatisTest.java, расположенный в директории /org/lanqiao/test/.

  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, чтобы улучшить свои навыки.