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

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

WBOY
WBOYnach vorne
2023-05-17 18:49:181859Durchsuche

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/*.xml

Konfigurieren Sie in application.yml:

mybatis:
  mapper-locations: classpath:mapper/*.xml

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen