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



🎯 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.
Ouvrez le fichier
CourseMapper.javasitué dans le répertoire/org/lanqiao/mapper/.Implémentez la méthode
selectCoursesdans l'interfaceCourseMapper. Cette méthode devrait accepter un paramètreMap<String, Object>pour stocker les paramètres d'entrée.
List<Course> selectCourses(Map<String, Object> params);
Ouvrez le fichier
CourseMapper.xmlsitué dans le répertoire/org/lanqiao/mapper/.Implémentez l'instruction SQL
selectCoursesdans l'espace de nomsCourseMapper. Utilisez la requête SQL dynamique pour vérifier si le paramètrecourseNameest 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>
- Définissez le
courseResultMapdans le fichierCourseMapper.xmlpour 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>
Ouvrez le fichier
MyBatisTest.javasitué dans le répertoire/org/lanqiao/test/.Implémentez la méthode de test
testSelectCoursespour 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".
Ouvrez le fichier
CourseMapper.javasitué dans le répertoire/org/lanqiao/mapper/.Implémentez la méthode
updateTeacherdans l'interfaceCourseMapper. Cette méthode devrait accepter un paramètreMap<String, Object>pour stocker les paramètres d'entrée.
void updateTeacher(Map<String, Object> params);
Ouvrez le fichier
CourseMapper.xmlsitué dans le répertoire/org/lanqiao/mapper/.Implémentez l'instruction SQL
updateTeacherdans l'espace de nomsCourseMapper. Utilisez la requête SQL dynamique pour vérifier si le paramètreteacherNameest vide. Si ce n'est pas le cas, mettez à jour la colonneteacherpour le cours avec l'courseIdspé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>
Ouvrez le fichier
MyBatisTest.javasitué dans le répertoire/org/lanqiao/test/.Implémentez la méthode de test
testUpdateTeacherpour 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();
}
Interroger les informations sur les cours en lots
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.
Ouvrez le fichier
CourseMapper.javasitué dans le répertoire/org/lanqiao/mapper/.Implémentez la méthode
selectCoursesByIdsdans l'interfaceCourseMapper. Cette méthode devrait accepter un paramètreMap<String, Object>pour stocker les paramètres d'entrée.
List<Map<String, Object>> selectCoursesByIds(Map<String, Object> params);
Ouvrez le fichier
CourseMapper.xmlsitué dans le répertoire/org/lanqiao/mapper/.Implémentez l'instruction SQL
selectCoursesByIdsdans l'espace de nomsCourseMapper. Utilisez la balise<foreach>pour itérer sur la listeidset 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>
Ouvrez le fichier
MyBatisTest.javasitué dans le répertoire/org/lanqiao/test/.Implémentez la méthode de test
testSelectCoursesByIdspour 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.
Résumé
Félicitations ! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires dans LabEx pour améliorer vos compétences.



