深入浅出Mybatis-Springと一体化
5081 ワード
mybatisを単独で使うのは多くの制限があります.(例えば複数のセッションを越えることができない事務)、しかも多くの業務システムは元々スプリングを使って管理する事務ですので、mybatisはspringと統合して使用したほうがいいです.
事前の要求
バージョンの要求
アイテム
バージョン
ダウンロード
説明
mybatis
3.0以上
https://github.com/mybatis/mybatis-3/releases
スプリング
3.0以上
http://projects.spring.io/spring-framework/
mybatis-spring
1.0以上
https://github.com/mybatis/spring/releases
spring事務配置
Sql Session FactoryBenは工場beanであり、その役割は解析配置(データソース、別名など)です.
Mapper FactoryBeanはプラントbeanで、spring容器の中で、工場beanは特殊な用途があって、springが工場beanを他のbeanに注入する時、工場bean自身に注入するのではなく、beanのgetObjectを呼び出す方法です.これからこのgetObjec方法を見て、何をしましたか?
実際のプロジェクトは一般的にはDaoだけではなく、複数のDaoがあれば上の配置に従って順次配置すればいいです.
一括更新の使い方
前のセクションでは、どのようにmapperオブジェクトをビジネス層に注入するかを話しましたが、mapperの行動は配置に依存しています.mybatisはデフォルトでは単一の更新を使用します.この時はテンプレート技術が必要です.
自動スキャンでmapperの配置を簡略化します.
前の章で見られますが、私達のdaoは配置ファイルが必要です.たくさんのdaoがあると配置ファイルが非常に大きくなります.管理が苦しくなります.幸いにもmybatisチームもこの点を意識しました.彼らはspringから提供された自動スキャン機能を利用してdaoを自動スキャンするツール類をカプセル化しました.このようにすれば、この機能を使って構成を簡略化することができます.
basePackage:スキャナがスキャンを開始するベースパッケージ名は、ネストスキャンに対応します.
sql Session TemplateBenName:前に述べたテンプレートbeanの名前.
Marker Interface:インタフェースベースのフィルタは、このインターフェースを実現したdaoはスキャナによってスキャンされ、basePackageとの役割を果たします.
インターフェースフィルタを使用する以外に、注釈フィルタも使用できます.
二つのフィルタ条件は一つしかないので注意してください.
事前の要求
バージョンの要求
アイテム
バージョン
ダウンロード
説明
mybatis
3.0以上
https://github.com/mybatis/mybatis-3/releases
スプリング
3.0以上
http://projects.spring.io/spring-framework/
mybatis-spring
1.0以上
https://github.com/mybatis/spring/releases
spring事務配置
単一インテグレーション
私たちはどうやって使うのかだけでなく、なぜ使うのかも分かります.Sql Session FactoryBenは工場beanであり、その役割は解析配置(データソース、別名など)です.
Mapper FactoryBeanはプラントbeanで、spring容器の中で、工場beanは特殊な用途があって、springが工場beanを他のbeanに注入する時、工場bean自身に注入するのではなく、beanのgetObjectを呼び出す方法です.これからこのgetObjec方法を見て、何をしましたか?
public T getObject() throws Exception {
return getSqlSession().getMapper(this.mapperInterface);
}
ここを見て皆さんはよく分かります.この方法は私達が以前単独でMybatisを使う方式と同じです.Sqlsessionオブジェクトを先に取得してからSqlsessionからMapperオブジェクトを取得します.もちろん、最終的に業務層に注入するのがこのMapperの対象です.実際のプロジェクトは一般的にはDaoだけではなく、複数のDaoがあれば上の配置に従って順次配置すればいいです.
一括更新の使い方
前のセクションでは、どのようにmapperオブジェクトをビジネス層に注入するかを話しましたが、mapperの行動は配置に依存しています.mybatisはデフォルトでは単一の更新を使用します.この時はテンプレート技術が必要です.
ここで筆者は二つのテンプレートオブジェクトを定義し、一つは単一の更新を使用し、一つは一括更新を使用する.テンプレートがあれば、私達はmapperの行動方式を変えることができます.
これに続くmapperの配置が違っていますが、ここではsql Session Factory属性を配置する必要はなく、sql Session Templateを配置する必要があります.自動スキャンでmapperの配置を簡略化します.
前の章で見られますが、私達のdaoは配置ファイルが必要です.たくさんのdaoがあると配置ファイルが非常に大きくなります.管理が苦しくなります.幸いにもmybatisチームもこの点を意識しました.彼らはspringから提供された自動スキャン機能を利用してdaoを自動スキャンするツール類をカプセル化しました.このようにすれば、この機能を使って構成を簡略化することができます.
MapperScanner Configrer自身の関連するspringの技術は多くなくて、興味があって、springの原理に対して比較的に理解するのはそのソースコードを下へ見ることができます.私達は重点的にその三つの属性を見ます.basePackage:スキャナがスキャンを開始するベースパッケージ名は、ネストスキャンに対応します.
sql Session TemplateBenName:前に述べたテンプレートbeanの名前.
Marker Interface:インタフェースベースのフィルタは、このインターフェースを実現したdaoはスキャナによってスキャンされ、basePackageとの役割を果たします.
インターフェースフィルタを使用する以外に、注釈フィルタも使用できます.
annotationClass:この注釈を配置したdaoはスキャナにスキャンされます.basePackageとの役割です.二つのフィルタ条件は一つしかないので注意してください.