Introduction
Dans ce projet, vous allez apprendre à ajouter des propriétés personnalisées à une classe d'entité et à utiliser un gestionnaire de type personnalisé pour convertir entre les valeurs booléennes et entières dans une application MyBatis.
👀 Aperçu
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Exécution de org.lanqiao.test.MyBatisTest
Données supprimées avec succès
Données ajoutées avec succès
[Numéro de cours : 1 Nom du cours : Structures de données Enseignant : Zoe Cours obligatoire : faux, Numéro de cours : 2 Nom du cours : JAVA Enseignant : William Cours obligatoire : vrai, Numéro de cours : 3 Nom du cours : Python Enseignant : Olivia Cours obligatoire : vrai, Numéro de cours : 4 Nom du cours : C++ Enseignant : Brian Cours obligatoire : faux, Numéro de cours : 6 Nom du cours : C Enseignant : Lisa Cours obligatoire : vrai, Numéro de cours : 8 Nom du cours : Intelligence artificielle Enseignant : Tom Cours obligatoire : vrai]
Données mises à jour avec succès
Tests exécutés : 4, Échecs : 0, Erreurs : 0, Ignorés : 0, Durée écoulée : 2,119 s
...
cNo cName teacher cProperties
1 Tests logiciels Jack 1
2 JAVA William 1
3 Python Olivia 1
4 C++ Brian 0
6 C Lisa 1
8 Intelligence artificielle Tom 1
🎯 Tâches
Dans ce projet, vous allez apprendre :
- Comment ajouter une propriété à la classe d'entité
Coursepour représenter la propriété du cours (booléencProperties, oùvraireprésente un cours obligatoire etfauxreprésente un cours facultatif) - Comment créer un gestionnaire de type personnalisé pour convertir entre les valeurs booléennes et entières
- Comment enregistrer le gestionnaire de type personnalisé dans le fichier de configuration MyBatis
- Comment mettre à jour la table de cours et le
CourseMapperpour utiliser le nouveau champcProperties - Comment utiliser le gestionnaire de type personnalisé pour mettre à jour les informations sur les cours dans la base de données
🏆 Réalisations
Après avoir terminé ce projet, vous serez capable de :
- Étendre la classe
BaseTypeHandlerpour créer un gestionnaire de type personnalisé - Enregistrer un gestionnaire de type personnalisé dans le fichier de configuration MyBatis
- Mettre à jour le schéma de base de données et le fichier de mapper correspondant pour utiliser un champ personnalisé
- Utiliser le gestionnaire de type personnalisé pour mettre à jour les données dans la base de données
Ajouter une propriété de cours à la classe d'entité
Dans cette étape, vous allez apprendre à ajouter une propriété à la classe d'entité Course.java pour représenter la propriété du cours (booléen cProperties, où vrai représente un cours obligatoire et faux représente un cours facultatif).
Ouvrez le fichier
Course.javasitué dans le packageorg.lanqiao.pojo.Ajoutez un champ privé booléen
cPropertiesà la classeCourse:
private Boolean cProperties;
- Générez les méthodes
getteretsetterpour le champcProperties:
public Boolean getcProperties() {
return cProperties;
}
public void setcProperties(Boolean cProperties) {
this.cProperties = cProperties;
}
- Mettez à jour le constructeur pour inclure le paramètre
cProperties:
public Course(int cNo, String cName, String teacher, Boolean cProperties) {
this.cNo = cNo;
this.cName = cName;
this.teacher = teacher;
this.cProperties = cProperties;
}
- Mettez à jour la méthode
toString()pour inclure les informationscProperties:
@Override
public String toString() {
return "Numéro de cours : " + this.cNo + "\tNom du cours : " + this.cName + "\tEnseignant : " + this.teacher + "\tCours obligatoire : " + (this.cProperties? "vrai" : "faux");
}
Créer un gestionnaire de type personnalisé
Dans cette étape, vous allez apprendre à créer un gestionnaire de type personnalisé pour convertir entre les valeurs booléennes et entières.
Créez une nouvelle classe Java
BooleanAndIntConverterdans le packageorg.lanqiao.converter.Étendez la classe
BaseTypeHandler<Boolean>et implémentez les méthodes suivantes :
public class BooleanAndIntConverter extends BaseTypeHandler<Boolean> {
@Override
public void setNonNullParameter(PreparedStatement preparedStatement, int i, Boolean aBoolean, JdbcType jdbcType) throws SQLException {
preparedStatement.setInt(i, aBoolean? 1 : 0);
}
@Override
public Boolean getNullableResult(ResultSet resultSet, String s) throws SQLException {
int result = resultSet.getInt(s);
return result == 1;
}
@Override
public Boolean getNullableResult(ResultSet resultSet, int i) throws SQLException {
int result = resultSet.getInt(i);
return result == 1;
}
@Override
public Boolean getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
int result = callableStatement.getInt(i);
return result == 1;
}
}
La méthode setNonNullParameter() convertit une valeur booléenne en une valeur entière (1 pour vrai, 0 pour faux), et les méthodes getNullableResult() convertissent une valeur entière en une valeur booléenne (1 pour vrai, 0 pour faux).
Enregistrer le gestionnaire de type personnalisé
Dans cette étape, vous allez apprendre à enregistrer le gestionnaire de type personnalisé dans le fichier de configuration MyBatis mybatis-config.xml.
Ouvrez le fichier
mybatis-config.xmlsitué dans le répertoire racine du projet.Ajoutez la configuration suivante pour enregistrer le gestionnaire de type personnalisé :
<typeHandlers>
<typeHandler handler="org.lanqiao.converter.BooleanAndIntConverter"/>
</typeHandlers>
Cette configuration indique à MyBatis d'utiliser la classe BooleanAndIntConverter pour gérer la conversion entre les valeurs booléennes et entières.
Mettre à jour la table Course et le Mapper
Dans cette étape, vous allez apprendre à mettre à jour la table de cours et le CourseMapper pour utiliser le nouveau champ cProperties.
- Ouvrez le fichier
CourseMapper.xmlet mettez à jour les instructions SQL pour utiliser le champcProperties:
<insert id="insertCourse" parameterType="org.lanqiao.pojo.Course">
insert into course(cNo,cName,teacher,cProperties)
values(#{cNo},#{cName},#{teacher},#{cProperties})
</insert>
<update id="updateCourse" parameterType="org.lanqiao.pojo.Course">
update course set cName=#{cName},teacher=#{teacher},cProperties=#{cProperties}
where cNo=#{cNo}
</update>
Les instructions insertCourse et updateCourse incluent désormais le champ cProperties.
Mettre à jour les informations sur le cours
Dans cette étape, vous allez apprendre à utiliser le gestionnaire de type personnalisé pour mettre à jour les informations sur le cours.
Ouvrez le fichier
MyBatisTest.java.Dans la méthode
testUpd(), mettez à jour les informations sur le cours pour le cours avec le numéro de cours 1 :
@Test
public void testUpd() throws IOException {
CourseMapper cMapper = session.getMapper(CourseMapper.class);
Course course = new Course(1, "Software Testing", "Jack", true);
int i = cMapper.updateCourse(course);
session.commit();
System.out.println((i!= 0? "Données mises à jour avec succès" : "Échec de la mise à jour des données"));
session.close();
}
Le champ cProperties est défini sur true, ce qui représente un cours obligatoire.
- Dans la méthode
testIns(), insérez un nouveau cours avec le numéro de cours 8 :
@Test
public void testIns() throws IOException {
CourseMapper cMapper = session.getMapper(CourseMapper.class);
Course course = new Course(8, "Artificial Intelligence", "Tom", true);
int i = cMapper.insertCourse(course);
session.commit();
System.out.println((i!= 0? "Données ajoutées avec succès" : "Échec de l'ajout des données"));
session.close();
}
Le champ cProperties est défini sur true, ce qui représente un cours obligatoire.
- Dans la méthode
testDEl(), supprimez le cours avec le numéro de cours 7 :
@Test
public void testDEl() throws IOException {
CourseMapper cMapper = session.getMapper(CourseMapper.class);
int i = cMapper.deleteCourse(7);
session.commit();
System.out.println((i!= 0? "Données supprimées avec succès" : "Échec de la suppression des données"));
session.close();
}
Après avoir effectué ces étapes, vous avez ajouté avec succès une propriété de cours à la classe d'entité, créé un gestionnaire de type personnalisé pour convertir entre les valeurs booléennes et entières, et utilisé le gestionnaire de type personnalisé pour mettre à jour les informations sur le cours dans la base de données.
- Testez l'application.
cd ~/project/MyBatisCourseDemo02/
mvn test
echo "USE MyBatisDemo; SELECT * FROM course;" | mysql -u root > course_data.txt
cat course_data.txt
La sortie devrait ressembler à ceci :
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running org.lanqiao.test.MyBatisTest
Données supprimées avec succès
Données ajoutées avec succès
[Course Number: 1 Course Name: Data Structures Instructor: Zoe Compulsory Course: false, Course Number: 2 Course Name: JAVA Instructor: William Compulsory Course: true, Course Number: 3 Course Name: Python Instructor: Olivia Compulsory Course: true, Course Number: 4 Course Name: C++ Instructor: Brian Compulsory Course: false, Course Number: 6 Course Name: C Instructor: Lisa Compulsory Course: true, Course Number: 8 Course Name: Artificial Intelligence Instructor: Tom Compulsory Course: true]
Données mises à jour avec succès
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.119 sec
...
cNo cName teacher cProperties
1 Software Testing Jack 1
2 JAVA William 1
3 Python Olivia 1
4 C++ Brian 0
6 C Lisa 1
8 Artificial Intelligence Tom 1
Résumé
Félicitations ! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.



