Introduction
Dans ce projet, vous allez apprendre à utiliser MyBatis pour récupérer des informations sur les cours dans une base de données et à mapper les résultats à un objet Java personnalisé. Vous allez également apprendre à gérer les incohérences entre la structure de la table de base de données et les propriétés de la classe d'entité.
👀 Aperçu


🎯 Tâches
Dans ce projet, vous allez apprendre :
- Comment modifier les propriétés et les méthodes d'une classe d'entité pour correspondre à la structure de la table de base de données.
- Comment configurer l'interface du mapper pour définir les méthodes de requête des informations sur les cours.
- Comment configurer le fichier XML du mapper pour définir les requêtes SQL et la cartographie des résultats.
- Comment implémenter des cas de test pour vérifier la fonctionnalité du mapper.
🏆 Réalisations
Après avoir terminé ce projet, vous serez capable de :
- Utiliser MyBatis pour interagir avec une base de données et récupérer des données.
- Utiliser
resultMappour gérer les incohérences entre la structure de la table de base de données et les propriétés de la classe d'entité. - Écrire des cas de test pour vérifier la fonctionnalité d'un mapper MyBatis.
Modifier la classe d'entité
Dans cette étape, vous allez apprendre à modifier les propriétés et les méthodes de la classe Course pour qu'elles correspondent à la structure de la table de base de données.
- Ouvrez le fichier
Course.javasitué dans le répertoire/org/lanqiao/pojo. - Changez les propriétés
cNo,cNameetteacherenid,nameetlecturerrespectivement. - Modifiez les méthodes getter et setter en conséquence pour correspondre aux nouveaux noms de propriété.
- Enregistrez les modifications dans le fichier
Course.java.
package org.lanqiao.pojo;
/**
* Définir une classe Course
* @author lanqiao
*/
public class Course {
// Changer le numéro de cours en id
private int id;
// Changer le nom du cours en name
private String name;
// Changer l'enseignant en lecturer
private String lecturer;
public Course() {
}
public Course(int id, String name, String lecturer) {
this.id = id;
this.name = name;
this.lecturer = lecturer;
}
// Modifier les noms des méthodes getter et setter
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLecturer() {
return lecturer;
}
public void setLecturer(String lecturer) {
this.lecturer = lecturer;
}
@Override
public String toString() {
return "Course ID: " + this.id + "\tCourse Name: " + this.name + "\tLecturer: " + this.lecturer;
}
}
Configurer l'interface Mapper
Dans cette étape, vous allez apprendre à configurer l'interface CourseMapper pour définir les méthodes de requête des informations sur les cours.
- Ouvrez le fichier
CourseMapper.javasitué dans le répertoire/org/lanqiao/mapper. - Modifiez l'interface pour inclure les méthodes suivantes :
selectAllCourses(): Récupère toutes les informations sur les cours.selectCourseById(int id): Récupère les informations sur le cours avec l'ID de cours spécifié.
package org.lanqiao.mapper;
import java.util.List;
import java.util.Map;
import org.lanqiao.pojo.Course;
public interface CourseMapper {
List<Course> selectAllCourses();
Map<String, Object> selectCourseById(int id);
}
Configurer le fichier XML Mapper
Dans cette étape, vous allez apprendre à configurer le fichier CourseMapper.xml pour définir les requêtes SQL et la cartographie des résultats.
- Ouvrez le fichier
CourseMapper.xmlsitué dans le répertoire racine du projet. - Définissez un
resultMappour spécifier la correspondance entre les colonnes de la table de base de données et les propriétés de la classeCourse. - Définissez les requêtes SQL pour les méthodes de l'interface
CourseMapper.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.lanqiao.mapper.CourseMapper">
<!-- Définition de resultMap -->
<resultMap id="courseResultMap" type="org.lanqiao.pojo.Course">
<id property="id" column="cNo"/>
<result property="name" column="cName"/>
<result property="lecturer" column="teacher"/>
</resultMap>
<!-- Requête pour toutes les informations sur les cours -->
<select id="selectAllCourses" resultMap="courseResultMap">
SELECT * FROM course;
</select>
<!-- Requête pour les informations sur le cours avec le numéro de cours 2 -->
<select id="selectCourseById" resultType="java.util.HashMap">
SELECT * FROM course WHERE cNo = #{id};
</select>
</mapper>
Implémenter les cas de test
Dans cette étape, vous allez apprendre à implémenter les cas de test pour vérifier la fonctionnalité de CourseMapper.
- Ouvrez le fichier
MyBatisTest.javasitué dans le répertoire/org/lanqiao/test. - Implémentez la méthode
testSelectAllCourses()pour récupérer et afficher toutes les informations sur les cours. - Implémentez la méthode
testSelectCourseById()pour récupérer les informations sur le cours avec le numéro de cours 2 et stocker le résultat dans uneHashMap.
package org.lanqiao.test;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import org.lanqiao.mapper.CourseMapper;
import org.lanqiao.pojo.Course;
public class MyBatisTest {
SqlSessionFactory sessionFactory = null;
SqlSession session = null;
@Before
public void before() throws IOException{
String resource = "mybatis-config.xml";
// Charger le fichier de configuration MyBatis
Reader reader = Resources.getResourceAsReader(resource);
// Créer la factory SqlSession
sessionFactory = new SqlSessionFactoryBuilder().build(reader);
// Créer un objet SqlSession capable d'exécuter des instructions SQL dans les fichiers de mapping SQL
session = sessionFactory.openSession();
}
@Test
public void testSelectAllCourses() throws IOException{
// Appeler la méthode getMapper() dans session pour retourner l'objet d'interface
CourseMapper cMapper = session.getMapper(CourseMapper.class);
// Effectuer la requête et retourner tous les objets Course
List<Course> courses = cMapper.selectAllCourses();
System.out.println(courses);
session.close();
}
@Test
public void testSelectCourseById() {
// Obtenir une instance de CourseMapper
CourseMapper mapper = session.getMapper(CourseMapper.class);
// Appeler la méthode pour interroger les informations du cours avec le numéro de cours 2
Map<String, Object> course = mapper.selectCourseById(2);
// Afficher le résultat de la requête
System.out.println(course);
}
}
En suivant ces étapes, vous avez modifié avec succès la classe d'entité, configuré l'interface et le fichier XML du mapper, et implémenté les cas de test pour récupérer des informations sur les cours à l'aide de MyBatis.
Exécution
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 aux effets de l'exécution suivants :


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



