Einführung
In diesem Projekt lernst du, wie du benutzerdefinierte Eigenschaften zu einer Entitätsklasse hinzufügen und einen benutzerdefinierten Typenhandler verwenden, um zwischen Boolean- und Integer-Werten in einer MyBatis-Anwendung zu konvertieren.
👀 Vorschau
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running org.lanqiao.test.MyBatisTest
Daten erfolgreich gelöscht
Daten erfolgreich hinzugefügt
[Kursnummer: 1 Kursname: Datenstrukturen Dozent: Zoe Pflichtkurs: false, Kursnummer: 2 Kursname: JAVA Dozent: William Pflichtkurs: true, Kursnummer: 3 Kursname: Python Dozent: Olivia Pflichtkurs: true, Kursnummer: 4 Kursname: C++ Dozent: Brian Pflichtkurs: false, Kursnummer: 6 Kursname: C Dozent: Lisa Pflichtkurs: true, Kursnummer: 8 Kursname: Künstliche Intelligenz Dozent: Tom Pflichtkurs: true]
Daten erfolgreich aktualisiert
Tests ausgeführt: 4, Fehler: 0, Fehler: 0, Übersprungen: 0, Zeitverbrauch: 2,119 Sekunden
...
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 Künstliche Intelligenz Tom 1
🎯 Aufgaben
In diesem Projekt wirst du lernen:
- Wie du einer
Course-Entitätsklasse eine Eigenschaft hinzufügen, um die Kurs-Eigenschaft zu repräsentieren (BooleancProperties, wobeitrueeinen Pflichtkurs undfalseeinen Wahlpflichtkurs darstellt) - Wie du einen benutzerdefinierten Typenhandler erstellen, um zwischen Boolean- und Integer-Werten zu konvertieren
- Wie du den benutzerdefinierten Typenhandler in der MyBatis-Konfigurationsdatei registrieren
- Wie du die Kurs-Tabelle und die
CourseMapperaktualisieren, um das neuecProperties-Feld zu verwenden - Wie du den benutzerdefinierten Typenhandler verwenden, um die Kursinformationen in der Datenbank zu aktualisieren
🏆 Errungenschaften
Nach Abschluss dieses Projekts wirst du in der Lage sein:
- Die
BaseTypeHandler-Klasse zu erweitern, um einen benutzerdefinierten Typenhandler zu erstellen - Einen benutzerdefinierten Typenhandler in der MyBatis-Konfigurationsdatei zu registrieren
- Das Datenbankschema und die entsprechende Mapper-Datei zu aktualisieren, um ein benutzerdefiniertes Feld zu verwenden
- Den benutzerdefinierten Typenhandler verwenden, um Daten in der Datenbank zu aktualisieren
Füge Kurs-Eigenschaft zur Entitätsklasse hinzu
In diesem Schritt lernst du, wie du einer Entitätsklasse Course.java eine Eigenschaft hinzufügen, um die Kurs-Eigenschaft zu repräsentieren (Boolean cProperties, wobei true einen Pflichtkurs und false einen Wahlpflichtkurs darstellt).
Öffne die Datei
Course.javaim Paketorg.lanqiao.pojo.Füge ein privates Boolean-Feld
cPropertieszurCourse-Klasse hinzu:
private Boolean cProperties;
- Generiere die
getter- undsetter-Methoden für dascProperties-Feld:
public Boolean getcProperties() {
return cProperties;
}
public void setcProperties(Boolean cProperties) {
this.cProperties = cProperties;
}
- Aktualisiere den Konstruktor, um den
cProperties-Parameter zu enthalten:
public Course(int cNo, String cName, String teacher, Boolean cProperties) {
this.cNo = cNo;
this.cName = cName;
this.teacher = teacher;
this.cProperties = cProperties;
}
- Aktualisiere die
toString()-Methode, um diecProperties-Informationen hinzuzufügen:
@Override
public String toString() {
return "Kursnummer: " + this.cNo + "\tKursname: " + this.cName + "\tDozent: " + this.teacher + "\tPlichtkurs: " + (this.cProperties? "true" : "false");
}
Erstelle einen benutzerdefinierten Typenhandler
In diesem Schritt lernst du, wie du einen benutzerdefinierten Typenhandler erstellst, um zwischen Boolean- und Integer-Werten zu konvertieren.
Erstelle eine neue Java-Klasse
BooleanAndIntConverterim Paketorg.lanqiao.converter.Erweitere die
BaseTypeHandler<Boolean>-Klasse und implementiere die folgenden Methoden:
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;
}
}
Die setNonNullParameter()-Methode konvertiert einen Boolean-Wert in einen Integer-Wert (1 für true, 0 für false), und die getNullableResult()-Methoden konvertieren einen Integer-Wert in einen Boolean-Wert (1 für true, 0 für false).
Registriere den benutzerdefinierten Typenhandler
In diesem Schritt lernst du, wie du den benutzerdefinierten Typenhandler in der MyBatis-Konfigurationsdatei mybatis-config.xml registrierst.
Öffne die Datei
mybatis-config.xmlim Projektwurzelverzeichnis.Füge die folgende Konfiguration hinzu, um den benutzerdefinierten Typenhandler zu registrieren:
<typeHandlers>
<typeHandler handler="org.lanqiao.converter.BooleanAndIntConverter"/>
</typeHandlers>
Diese Konfiguration veranlasst MyBatis, die BooleanAndIntConverter-Klasse zum Verarbeiten der Konvertierung zwischen Boolean- und Integer-Werten zu verwenden.
Aktualisiere die Kurs-Tabelle und den Mapper
In diesem Schritt lernst du, wie du die Kurs-Tabelle und die CourseMapper aktualisierst, um das neue cProperties-Feld zu verwenden.
- Öffne die Datei
CourseMapper.xmlund aktualisiere die SQL-Anweisungen, um dascProperties-Feld zu verwenden:
<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>
Die insertCourse- und updateCourse-Anweisungen enthalten jetzt das cProperties-Feld.
Aktualisiere die Kursinformationen
In diesem Schritt lernst du, wie du den benutzerdefinierten Typenhandler verwendest, um die Kursinformationen zu aktualisieren.
Öffne die Datei
MyBatisTest.java.In der
testUpd()-Methode aktualisiere die Kursinformationen für den Kurs mit der Kursnummer 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? "Daten erfolgreich aktualisiert" : "Fehler beim Aktualisieren der Daten"));
session.close();
}
Das cProperties-Feld ist auf true gesetzt, was einen Pflichtkurs darstellt.
- In der
testIns()-Methode füge einen neuen Kurs mit der Kursnummer 8 hinzu:
@Test
public void testIns() throws IOException {
CourseMapper cMapper = session.getMapper(CourseMapper.class);
Course course = new Course(8, "Künstliche Intelligenz", "Tom", true);
int i = cMapper.insertCourse(course);
session.commit();
System.out.println((i!= 0? "Daten erfolgreich hinzugefügt" : "Fehler beim Hinzufügen der Daten"));
session.close();
}
Das cProperties-Feld ist auf true gesetzt, was einen Pflichtkurs darstellt.
- In der
testDEl()-Methode lösche den Kurs mit der Kursnummer 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? "Daten erfolgreich gelöscht" : "Fehler beim Löschen der Daten"));
session.close();
}
Nach Abschluss dieser Schritte hast du erfolgreich eine Kurs-Eigenschaft zur Entitätsklasse hinzugefügt, einen benutzerdefinierten Typenhandler erstellt, um zwischen Boolean- und Integer-Werten zu konvertieren, und den benutzerdefinierten Typenhandler verwendet, um die Kursinformationen in der Datenbank zu aktualisieren.
- Teste die Anwendung.
cd ~/project/MyBatisCourseDemo02/
mvn test
echo "USE MyBatisDemo; SELECT * FROM course;" | mysql -u root > course_data.txt
cat course_data.txt
Die Ausgabe sollte wie folgt aussehen:
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running org.lanqiao.test.MyBatisTest
Daten erfolgreich gelöscht
Daten erfolgreich hinzugefügt
[Kursnummer: 1 Kursname: Datenstrukturen Dozent: Zoe Pflichtkurs: false, Kursnummer: 2 Kursname: JAVA Dozent: William Pflichtkurs: true, Kursnummer: 3 Kursname: Python Dozent: Olivia Pflichtkurs: true, Kursnummer: 4 Kursname: C++ Dozent: Brian Pflichtkurs: false, Kursnummer: 6 Kursname: C Dozent: Lisa Pflichtkurs: true, Kursnummer: 8 Kursname: Künstliche Intelligenz Dozent: Tom Pflichtkurs: true]
Daten erfolgreich aktualisiert
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 Künstliche Intelligenz Tom 1
Zusammenfassung
Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Übungen absolvieren, um deine Fähigkeiten zu verbessern.



