Heim >Java >javaLernprogramm >So lösen Sie das Problem, dass leere Mapper automatisch in das Idee-SpringBoot-Projekt eingefügt werden
Wenn im SpringBoot-Projekt MyBatis als Persistenzschicht-Framework verwendet wird, kann es bei Verwendung der automatischen Injektion zu dem Problem kommen, dass der Mapper eine Nullzeiger-Ausnahme meldet. Dies liegt daran, dass SpringBoot die Mapper-Schnittstelle von MyBatis während der automatischen Injektion nicht korrekt identifizieren kann und einige zusätzliche Konfigurationen erfordert.
Es gibt zwei Möglichkeiten, dieses Problem zu lösen:
1. Fügen Sie Anmerkungen zur Mapper-Schnittstelle hinzu.
Fügen Sie die @Mapper-Annotation zur Mapper-Schnittstelle hinzu, um SpringBoot mitzuteilen, dass diese Schnittstelle eine Mapper-Schnittstelle ist und als Proxy verwendet werden muss. Ein Beispiel ist wie folgt:
@Mapper public interface UserMapper { // ... }
2. Konfigurieren Sie den Mapper-Scanpfad manuell. Konfigurieren Sie den Mapper-Scanpfad manuell in application.properties oder application.yml, um SpringBoot anzuweisen, die Mapper-Schnittstellen unter welchen Paketen zu scannen. Das Beispiel sieht wie folgt aus:
Konfigurieren Sie in application.properties:
mybatis.mapper-locations=classpath:mapper/*.xmlKonfigurieren Sie in application.yml:
mybatis: mapper-locations: classpath:mapper/*.xmlEs ist zu beachten, dass sich mapper/*.xml hier auf den Pfad bezieht, in dem sich die XML-Datei befindet, die der Mapper-Schnittstelle entspricht gespeichert. Wenn Sie Anmerkungen zum Konfigurieren von SQL-Anweisungen verwenden, müssen Sie den XML-Dateipfad nicht konfigurieren.
Nach der Konfiguration auf die beiden oben genannten Arten können Sie die Mapper-Schnittstelle korrekt injizieren, wenn Sie die automatische Injektion verwenden.
Abschließend: Wenn Sie alle oben genannten Schritte ausgeführt haben und immer noch ein leeres Ergebnis erhalten, überprüfen Sie, ob Sie den Mapper nicht versehentlich in die Controller-Ebene eingefügt haben Das injizierte Objekt wird nicht automatisch in den Frühling injiziert. Das Objekt im Container wird als leer gemeldet und die gesamte Szene muss in der Controller-Ebene mit @Autowird injiziert werden
Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem, dass leere Mapper automatisch in das Idee-SpringBoot-Projekt eingefügt werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!