Heim > Java > javaLernprogramm > Hauptteil

So lösen Sie das Problem, dass leere Mapper automatisch in das Idee-SpringBoot-Projekt eingefügt werden

WBOY
Freigeben: 2023-05-17 18:49:18
nach vorne
1822 Leute haben es durchsucht

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 {
    // ...
}
Nach dem Login kopieren

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/*.xml
Nach dem Login kopieren

Konfigurieren Sie in application.yml:

mybatis:
  mapper-locations: classpath:mapper/*.xml
Nach dem Login kopieren
Es ​​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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage