Einführung
In diesem Projekt lernst du, wie du MyBatis verwendest, um Kursinformationen aus einer Datenbank abzurufen und die Ergebnisse auf ein benutzerdefiniertes Java-Objekt zuzuordnen. Du wirst auch lernen, wie Inkonsistenzen zwischen der Datenbanktabellenstruktur und den Entitätsklasse-Eigenschaften behandelt werden.
👀 Vorschau


🎯 Aufgaben
In diesem Projekt wirst du lernen:
- Wie du die Eigenschaften und Methoden einer Entitätsklasse modifizierst, um der Datenbanktabellenstruktur zu entsprechen.
- Wie du die Mapper-Schnittstelle konfigurierst, um die Methoden zur Abfrage von Kursinformationen zu definieren.
- Wie du die mapper-XML-Datei konfigurierst, um die SQL-Abfragen und die Ergebniszuordnung zu definieren.
- Wie du Testfälle implementierst, um die Funktionalität des Mappers zu überprüfen.
🏆 Errungenschaften
Nach Abschluss dieses Projekts wirst du in der Lage sein:
- MyBatis zum Interagieren mit einer Datenbank und zum Abrufen von Daten zu verwenden.
resultMapzum Behandeln von Inkonsistenzen zwischen der Datenbanktabellenstruktur und den Entitätsklasse-Eigenschaften zu verwenden.- Testfälle zu schreiben, um die Funktionalität eines MyBatis-Mappers zu überprüfen.
Ändern der Entitätsklasse
In diesem Schritt lernst du, wie du die Eigenschaften und Methoden der Course-Klasse modifizierst, um der Datenbanktabellenstruktur zu entsprechen.
- Öffne die Datei
Course.javaim Verzeichnis/org/lanqiao/pojo. - Ändere die Eigenschaften
cNo,cNameundteacherinid,nameundlecturerrespectively. - Modifiziere die Getter- und Setter-Methoden entsprechend, um den neuen Eigenschaftennamen zu entsprechen.
- Speichere die Änderungen in der Datei
Course.java.
package org.lanqiao.pojo;
/**
* Definiert eine Course-Klasse
* @author lanqiao
*/
public class Course {
// Ändere Kursnummer in id
private int id;
// Ändere Kursname in name
private String name;
// Ändere Dozent in lecturer
private String lecturer;
public Course() {
}
public Course(int id, String name, String lecturer) {
this.id = id;
this.name = name;
this.lecturer = lecturer;
}
// Modifiziere Getter- und Setter-Methodennamen
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;
}
}
Konfigurieren der Mapper-Schnittstelle
In diesem Schritt lernst du, wie du die CourseMapper-Schnittstelle konfigurierst, um die Methoden zur Abfrage von Kursinformationen zu definieren.
- Öffne die Datei
CourseMapper.javaim Verzeichnis/org/lanqiao/mapper. - Modifiziere die Schnittstelle, um die folgenden Methoden hinzuzufügen:
selectAllCourses(): Ruft alle Kursinformationen ab.selectCourseById(int id): Ruft die Kursinformationen mit der angegebenen Kurs-ID ab.
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);
}
Konfigurieren der Mapper-XML-Datei
In diesem Schritt lernst du, wie du die CourseMapper.xml-Datei konfigurierst, um die SQL-Abfragen und die Ergebniszuordnung zu definieren.
- Öffne die Datei
CourseMapper.xmlim Stammverzeichnis des Projekts. - Definiere ein
resultMap, um die Zuordnung zwischen den Spalten der Datenbanktabelle und den Eigenschaften derCourse-Klasse anzugeben. - Definiere die SQL-Abfragen für die Methoden in der
CourseMapper-Schnittstelle.
<?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">
<!-- Definition von 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>
<!-- Abfrage aller Kursinformationen -->
<select id="selectAllCourses" resultMap="courseResultMap">
SELECT * FROM course;
</select>
<!-- Abfrage von Kursinformationen mit Kursnummer 2 -->
<select id="selectCourseById" resultType="java.util.HashMap">
SELECT * FROM course WHERE cNo = #{id};
</select>
</mapper>
Implementieren der Testfälle
In diesem Schritt lernst du, wie du die Testfälle implementierst, um die Funktionalität der CourseMapper zu überprüfen.
- Öffne die Datei
MyBatisTest.javaim Verzeichnis/org/lanqiao/test. - Implementiere die Methode
testSelectAllCourses(), um alle Kursinformationen abzurufen und anzuzeigen. - Implementiere die Methode
testSelectCourseById(), um die Kursinformationen mit Kursnummer 2 abzurufen und das Ergebnis in eineHashMapzu speichern.
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";
// Lade die MyBatis-Konfigurationsdatei
Reader reader = Resources.getResourceAsReader(resource);
// Erstelle die SqlSession-Factory
sessionFactory = new SqlSessionFactoryBuilder().build(reader);
// Erstelle ein SqlSession-Objekt, das in der Lage ist, SQL-Anweisungen in SQL-Mapping-Dateien auszuführen
session = sessionFactory.openSession();
}
@Test
public void testSelectAllCourses() throws IOException{
// Rufe die getMapper()-Methode in session auf, um das Schnittstellenobjekt zurückzugeben
CourseMapper cMapper = session.getMapper(CourseMapper.class);
// Führe die Abfrage aus und gebe alle Course-Objekte zurück
List<Course> courses = cMapper.selectAllCourses();
System.out.println(courses);
session.close();
}
@Test
public void testSelectCourseById() {
// Hole eine Instanz von CourseMapper
CourseMapper mapper = session.getMapper(CourseMapper.class);
// Rufe die Methode auf, um die Informationen des Kurses mit Kursnummer 2 abzurufen
Map<String, Object> course = mapper.selectCourseById(2);
// Gebe das Abfrageergebnis aus
System.out.println(course);
}
}
Indem du diese Schritte folgst, hast du erfolgreich die Entitätsklasse geändert, die Mapper-Schnittstelle und die XML-Datei konfiguriert und die Testfälle implementiert, um Kursinformationen mit MyBatis abzurufen.
Ausführen
Schließlich kannst du den Code in der Konsole kompilieren und ausführen und die Testdateien mit Maven überprüfen, indem du die folgenden Befehle verwendest:
cd MyBatisCourseDemo03
mvn test
Du kannst auf die folgenden Ausführungsresultate verweisen:


Zusammenfassung
Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Übungen absolvieren, um deine Fähigkeiten zu verbessern.



