Mit MyBatis-Spring können Sie Mapper in Servicebohnen einfügen. Wenn Sie einen Mapper verwenden, ist es in Ordnung, den Mapper wie DAO anzurufen, aber zu diesem Zeitpunkt müssen Sie keine DAO -Implementierungen codieren, da MyBatis dies für Sie tun wird.
Mit dem injizierten Mapper hat Ihr Code keine Abhängigkeiten mit MyBatis-Spring-Abhängigkeiten und MyBatis-Abhängigkeiten. In unserer Anwendung steckt ein so einfacher Mapper. Sie sollten auch wissen, dass der Mapper nur eine Schnittstelle ist:
public interface usermapper {user getUser (String userID); }So verwenden Sie MyBatis-Spring, um Mapper zu erstellen:
<bean id = "userMapper"> <Eigenschaft name = "sqlSessionFactory" ref = "
Jetzt ist Ihr Mapper bereit, in das Serviceobjekt zu injizieren:
<bean id = "fooService"> <Eigenschaft name = "usermapper" ref = "usermapper"/> </bean>
Hinweis: Der vollständige Klassenname der Mapper -Schnittstelle entspricht dem Namespace der Mapper XML -Konfigurationsdatei.
Über MapperFactoryBean
Die von MapperFactoryBean erstellte Proxy -Klasse implementiert die Mapper -Schnittstelle (wie im obigen Beispiel: UsMapper) und wird in die Anwendung injiziert. Da der Agent in der Laufumgebung erstellt wird, muss der angegebene Mapper eine Schnittstelle sein. Anstelle einer konkreten Implementierungsklasse.
Es ist nicht erforderlich, alle Mapper in der XML -Konfigurationsdatei von Spring zu registrieren. Stattdessen können Sie einen MapperscannerConfiger verwenden, der nach Mapper unter dem Klassenpfad sucht und automatisch in MapperFactoryBeans erstellt. Um einen MapperscannerConfiger zu erstellen, können Sie die Konfiguration von Spring den folgenden Code hinzufügen:
<bean> <properie name = "basepackage" value = "org.mybatis.spring.sample.mapper"/> </bean>
Mit der Basispackage -Eigenschaft können Sie den grundlegenden Paketpfad für die Mapper -Schnittstellendatei festlegen. Sie können mehr als einen Paketpfad mit einem Semikolon oder einem Komma als Trennzeichen einstellen. Jeder Mapper wird rekursiv im angegebenen Paketpfad durchsucht.
Beachten Sie, dass SQLSessionFactory oder SQLSessionTemplate nicht angeben müssen, da der MapperscannerConfiger eine MapperFactoryBean erstellt und dann automatisch zusammenstellen wird. Wenn Sie jedoch mehr als eine DataSource (und damit mehrere SQLSessionFactory) verwenden, kann die Auto-Assembly fehlschlagen. In diesem Fall können Sie die Eigenschaft SQLSessionFactory oder SQLSessionTemplate verwenden, um die richtige Fabrik/Vorlage festzulegen.
MapperscannerConfiger unterstützt die Filterung, um Mapper durch bestimmte Erstellungsschnittstellen oder Anmerkungen zu erstellen. Die Eigenschaft für AnnotationClass gibt den Annotationsnamen an, nach dem gesucht wird. Die MarkerInterface -Eigenschaft gibt die übergeordnete Schnittstelle an, nach der gesucht wird. Wenn beide angegeben sind, entspricht der MakPer, der der Schnittstelle hinzugefügt wurde, beide Kriterien. Standardmäßig sind beide Eigenschaften null, sodass alle im Basispaket angegebenen Schnittstellen als Mapper geladen werden können.
Der entdeckte Mapper wird mithilfe der Standard -Benennungsrichtlinie von Spring für die automatische Erkennungskomponente benannt. Das heißt, wenn keine Anmerkung gefunden wird, verwendet sie den nicht kapseligen nicht-kapseligen Klassennamen des Mapper. Wenn Sie jedoch die @Component oder JSR-330 @Named Annotation finden, wird der Name erhalten.