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 resultMap pour 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.
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.java situé dans le répertoire /org/lanqiao/pojo.
Changez les propriétés cNo, cName et teacher en id, name et lecturer respectivement.
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 du 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.java situé 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é.
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.xml situé dans le répertoire racine du projet.
Définissez un resultMap pour spécifier la correspondance entre les colonnes de la table de base de données et les propriétés de la classe Course.
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.java situé 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 une HashMap.
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 :
We use cookies for a number of reasons, such as keeping the website reliable and secure, to improve your experience on our website and to see how you interact with it. By accepting, you agree to our use of such cookies. Privacy Policy