MyBatis-Springを使用すると、マッパーをサービス豆に注入できます。マッパーを使用する場合、Mybatisがあなたのためにそれを行うので、MapperをDAOに呼ぶようにマッパーを呼び出すことは問題ありませんが、DAOの実装をエンコードする必要はありません。
注入されたマッパーを使用すると、コードにはmybatis-springの依存関係やmybatis依存関係がありません。アプリケーションにはこのようなシンプルなマッパーがあります。また、マッパーは単なるインターフェイスであることを知っておく必要があります。
パブリックインターフェイスusermapper {user getUser(string userid); }これは、mybatis-springを使用してマッパーを作成する方法です。
<bean id = "usermapper"> <プロパティ名= "sqlsessionfactory" ref = "sqlsessionfactory" /> <プロパティname = "mapperinterface" value = "sample.usermapper" /> < /bean>
これで、マッパーはサービスオブジェクトに注入する準備ができました。
<bean id = "fooservice"> <プロパティ名= "usermapper" ref = "usermapper"/> </bean>
注:マッパーインターフェイスのクラス名全体は、マッパーXML構成ファイルの名前空間に対応しています。
MapperFactoryBeanについて
MapperFactoryBeanによって作成されたプロキシクラスは、Mapperインターフェイスを実装しています(上記の例のように:Usermapper)。エージェントは実行環境で作成されるため、指定されたマッパーはインターフェイスでなければなりません。具体的な実装クラスの代わりに。
SpringのXML構成ファイルにすべてのマッパーを登録する必要はありません。代わりに、MapperScannerConfigurerを使用して、クラスパスの下のマッパーを探し、自動的にMapperFactoryBeansに作成できます。 MapperScannerConfigurerを作成するには、次のコードをSpringの構成に追加できます。
<bean> <プロパリー名= "basepackage" value = "org.mybatis.spring.sample.mapper"/> </bean>
BasePackageプロパティを使用すると、Mapper Interfaceファイルの基本パッケージパスを設定できます。セミコロンまたはコンマをセパレーターとして使用して、複数のパッケージパスを設定できます。各マッパーは、指定されたパッケージパスで再帰的に検索されます。
MapperScannerConfigurerがMapperFactoryBeanを作成してから自動的に組み立てるため、SQLSessionFactoryまたはSQLSessionTemplateを指定する必要はないことに注意してください。ただし、複数のDataSource(したがって複数のSQLSessionFactory)を使用すると、自動アセンブリが失敗する可能性があります。この場合、SQLSessionFactoryまたはSQLSessionTemplateプロパティを使用して、正しい工場/テンプレートを設定できます。
MapperScannerConfigurerは、指定された作成インターフェイスまたは注釈によってマッパーを作成するフィルタリングをサポートしています。 AnnotationClassプロパティは、検索する注釈名を指定します。 MarkerInterfaceプロパティは、検索する親インターフェイスを指定します。両方が指定されている場合、インターフェイスに追加されたマッパーは両方の基準と一致します。デフォルトでは、両方のプロパティがnullであるため、ベースパッケージに与えられたすべてのインターフェイスはマッパーとしてロードできます。
発見されたマッパーは、自動検出コンポーネントのSpringのデフォルト命名ポリシーを使用して命名されます。つまり、注釈が見つからない場合、マッパーの非抑制されていない非適格なクラス名を使用します。ただし、@ComponentまたはJSR-330 @という名前のAnnotationを見つけた場合、名前が表示されます。