Opérer sur le tableau de cours

JavaScriptJavaScriptBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce projet, vous allez apprendre à utiliser MyBatis pour effectuer diverses opérations sur une table de cours, notamment la requête d'informations sur les cours, la mise à jour du professeur de cours et la requête en lots de données de cours.

👀 Aperçu

Exemple de requête de table de cours
Exemple de requête SQL dynamique de MyBatis
Exemple de requête en lots

🎯 Tâches

Dans ce projet, vous allez apprendre :

  • Comment utiliser la requête SQL dynamique pour interroger les informations sur les cours dont le nom commence par une majuscule "C"
  • Comment utiliser la requête SQL dynamique pour mettre à jour le professeur de cours d'un cours spécifique tout en laissant les autres inchangés
  • Comment utiliser la requête SQL dynamique pour interroger en lots les informations sur les cours avec une liste de numéros de cours

🏆 Réalisations

Après avoir terminé ce projet, vous serez capable de :

  • Utiliser les paramètres d'entrée et de sortie de MyBatis
  • Implémenter la requête SQL dynamique dans MyBatis
  • Utiliser la mappage des résultats pour spécifier le mappage du jeu de résultats
  • Utiliser la balise <foreach> pour les requêtes en lots

Interroger les informations sur les cours

Dans cette étape, vous allez apprendre à interroger les informations sur les cours dont le nom commence par une majuscule "C" à l'aide de la requête SQL dynamique.

  1. Ouvrez le fichier CourseMapper.java situé dans le répertoire /org/lanqiao/mapper/.

  2. Implémentez la méthode selectCourses dans l'interface CourseMapper. Cette méthode devrait accepter un paramètre Map<String, Object> pour stocker les paramètres d'entrée.

List<Course> selectCourses(Map<String, Object> params);
  1. Ouvrez le fichier CourseMapper.xml situé dans le répertoire /org/lanqiao/mapper/.

  2. Implémentez l'instruction SQL selectCourses dans l'espace de noms CourseMapper. Utilisez la requête SQL dynamique pour vérifier si le paramètre courseName est vide. Si ce n'est pas le cas, ajoutez une condition pour filtrer les noms de cours commençant par une majuscule "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. Définissez le courseResultMap dans le fichier CourseMapper.xml pour spécifier le mappage du jeu de résultats.
<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. Ouvrez le fichier MyBatisTest.java situé dans le répertoire /org/lanqiao/test/.

  2. Implémentez la méthode de test testSelectCourses pour tester la fonctionnalité 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);
}

Mettre à jour le professeur de cours

Dans cette étape, vous allez apprendre à utiliser la requête SQL dynamique pour mettre à jour le professeur de cours ayant le numéro de cours "7" en "Blue".

  1. Ouvrez le fichier CourseMapper.java situé dans le répertoire /org/lanqiao/mapper/.

  2. Implémentez la méthode updateTeacher dans l'interface CourseMapper. Cette méthode devrait accepter un paramètre Map<String, Object> pour stocker les paramètres d'entrée.

void updateTeacher(Map<String, Object> params);
  1. Ouvrez le fichier CourseMapper.xml situé dans le répertoire /org/lanqiao/mapper/.

  2. Implémentez l'instruction SQL updateTeacher dans l'espace de noms CourseMapper. Utilisez la requête SQL dynamique pour vérifier si le paramètre teacherName est vide. Si ce n'est pas le cas, mettez à jour la colonne teacher pour le cours avec l'courseId spécifié.

<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. Ouvrez le fichier MyBatisTest.java situé dans le répertoire /org/lanqiao/test/.

  2. Implémentez la méthode de test testUpdateTeacher pour tester la fonctionnalité 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();
}

Requête en lots d'informations sur les cours

Dans cette étape, vous allez apprendre à effectuer une requête en lots d'informations sur les cours avec les numéros de cours "1,2,3" à l'aide de la requête SQL dynamique.

  1. Ouvrez le fichier CourseMapper.java situé dans le répertoire /org/lanqiao/mapper/.

  2. Implémentez la méthode selectCoursesByIds dans l'interface CourseMapper. Cette méthode devrait accepter un paramètre Map<String, Object> pour stocker les paramètres d'entrée.

List<Map<String, Object>> selectCoursesByIds(Map<String, Object> params);
  1. Ouvrez le fichier CourseMapper.xml situé dans le répertoire /org/lanqiao/mapper/.

  2. Implémentez l'instruction SQL selectCoursesByIds dans l'espace de noms CourseMapper. Utilisez la balise <foreach> pour itérer sur la liste ids et construire la clause 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. Ouvrez le fichier MyBatisTest.java situé dans le répertoire /org/lanqiao/test/.

  2. Implémentez la méthode de test testSelectCoursesByIds pour tester la fonctionnalité 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);
}

Exécution

Pour vous assurer que le code fonctionne, veillez à introduire les classes pertinentes dans le code.

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;

Enfin, vous pouvez compiler et exécuter le code dans le terminal et vérifier les fichiers de test avec Maven, en utilisant les commandes suivantes :

cd MyBatisCourseDemo03
mvn test

Vous pouvez vous référer à 👀 Aperçu pour une présentation en cours d'exécution.

✨ Vérifier la solution et pratiquer

Sommaire

Félicitations ! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires dans LabEx pour améliorer vos compétences.