MyBatisグローバル設定ファイル
MyBatisの設定ファイルには、MyBatisの動作に大きく影響する設定とプロパティ情報が含まれています。資料
トップレベルの構造は次のとおりです。
構成
• プロパティ
• 設定
•typeAliasesタイプの命名
•typeHandlersタイプハンドラー
•objectFactoryオブジェクトファクトリ
•プラグイン
•環境
•環境環境変数
•transactionManagerトランザクションマネージャー
•dataSourceデータソース
•databaseIdProviderデータベースベンダーID
•マッパー
プロパティ
mybatisはプロパティを使用して、外部プロパティ構成ファイルのコンテンツを導入できます
リソース:クラスパスの下にリソースを導入します
url:ネットワークパスまたはディスクパスの下にリソースを導入します
<properties resource="dbconfig.properties"></properties>
プロパティが複数の場所で構成されている場合、MyBatisは次の順序でロードされます。
–プロパティ要素本体で指定されたプロパティが最初に読み取られます。
–次に、properties要素のresource属性に従ってクラスパスの下のプロパティファイルを読み取るか、url属性で指定されたパスに従ってプロパティファイルを読み取り、読み取り属性を同じ名前で上書きします。–最後に、メソッドパラメータとして渡された属性を読み取り、読み取った属性を同じ名前で上書きします。
設定
これらはMyBatisの非常に重要な調整設定であり、MyBatisの実行時の動作を変更します。
設定には多くの重要な設定項目が含まれています
設定:各設定項目の設定に使用します
名前:アイテム名を設定します
value:設定項目の値
mapUnderscoreToCamelCase:last_name-> lastNameという名前のキャメルケース
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
typeAliasesタイプの命名
typeAliases:このパッケージの下の各クラスのエイリアスをバッチで設定できます
エイリアスでは大文字と小文字は区別されません
小文字の単純なクラス名であるデフォルトのエイリアスを作成します
typeAlias:Javaタイプのエイリアス
type:エイリアスを作成するタイプの完全なクラス名を指定します。デフォルトのエイリアスはクラス名の小文字です:employee
エイリアス:新しいエイリアスを指定します
パッケージ:特定のパッケージの下にあるすべてのクラスのバッチエイリアス
name:パッケージ名を指定します(現在のパッケージおよび以下のすべての子孫パッケージの下にある各クラスのデフォルトのエイリアス(小文字のクラス名))
既存の問題:
Beanパッケージの下にクラスEmployeeがあり、Beanパッケージの下にサブパッケージとEmployeeというクラスがあるとします。このとき、2つのパッケージのクラス名が競合するため、アノテーションを使用してのエイリアスを作成することもできます。クラス
@エイリアス("")
パブリッククラスEmployee {}
MyBatisには、多くの一般的なJavaタイプに対応するタイプエイリアスが組み込まれていることは注目に値します。これらはすべて大文字と小文字を区別しないため、エイリアスを作成するときに既存のエイリアスを使用しないでください。
環境
Mybatisはさまざまな環境を構成できます。デフォルトでは、特定の環境の使用を指定します。これにより、高速スイッチングを実現できます。
環境:特定の環境情報を構成します。2つのタグが必要です。idは現在の環境の一意の識別子を表します
transactionManagerトランザクションマネージャー
type:トランザクションマネージャーのタイプ[JDBC(JDBCのコミットおよびロールバック設定を使用します。トランザクションのスコープを管理するためにデータソースから取得した接続に依存します。)| MANAGED(接続をコミットまたはロールバックしないでください。コンテナはトランザクションを管理しますライフサイクル全体(JEEアプリケーションサーバーのコンテキストなど)]
JDBC:JdbcTransactionFactory
カスタムトランザクションマネージャーは、TransactionFactoryインターフェースを実装できます
dataSourceデータソース
type:データソースのタイプ[UNPOOLED(接続プールを使用しない)| POOLED(接続プールを使用する)| JNDI(EJBやアプリケーションサーバーなどのコンテナーで指定されたデータソースを検索する)]
カスタムデータソースはDataSourceFactoryインターフェースを実装します
実際の開発では、Springを使用してデータソースを管理し、上記の構成をカバーするようにトランザクション制御を構成します
databaseIdProviderデータベースベンダーID
databaseIdProvider:さまざまなデータベースベンダーに応じて、さまざまなステートメントを実行できます。
タイプ:データベースタイプDB_VENDOR
機能はデータベースベンダーIDを取得することです(ドライバーはそれに付属しています)、mybatisはデータベースベンダーIDに従って異なるSQLを実行できます
MYSQL Oracle SQL Server
値:識別用のエイリアス。SQLステートメントがdatabaseId属性を使用して参照するのに便利です。
DB_VENDOR
– DatabaseMetaData#getDatabaseProductName()によって返される文字列によって設定されます。この文字列は通常非常に長く、同じ製品の異なるバージョンは異なる値を返すため、属性エイリアスを設定して作成することをお勧めします。
短くする
•MyBatisのマッチングルールは次のとおりです。
– 1. databaseIdProviderタグが構成されていない場合、databaseId = null
– 2. databaseIdProviderタグが構成されている場合は、タグに構成されている名前を使用してデータベース情報と一致させ、databaseId =一致の構成で指定された値を設定します。それ以外の場合は、nullのままになります。
– 3. databaseIdがnullでない場合、彼はdatabaseIdを構成するSQLステートメントのみを検索します。
– 4. MyBatisは、databaseId属性がなく、現在のデータベースと一致するdatabaseId属性を持つすべてのステートメントをロードします。databaseIdありとdatabaseIdなしの同じステートメントが同時に見つかった場合、後者は破棄されます。
マッパー
マッパー:SQLマッピングを登録します
プロファイルを登録する
リソース:クラスパスの下のSQLマッピングファイルを参照します
url:ネットワークパスまたはディスクパスでSQLマッピングファイルを使用します
登録インターフェース
クラス:引用されたアプリケーションインターフェイス
1.インターフェイスマッピングファイル。マッピングファイルの名前は、インターフェイス名と同じで、同じディレクトリに配置する必要があります。
2. SQLマッピングファイルはありません。すべてのSQLは、注釈付きのインターフェイスに書き込まれます。
注釈はインターフェースに書かれています
推奨事項:DaoインターフェイスでSQLマッピングファイルを作成することは、重要で単純ではなく、より重要で複雑です。注釈を使用して迅速に開発できます。
パッケージ:バッチ登録
SQLマッピングファイル
名前空間:名前空間;インターフェイスの完全なクラス名として指定
id:一意の識別子
resultType:戻り値タイプ
#{id}:渡されたパラメータからid値を取り出します
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="school.xauat.mybatis.dao.EmployeeMapper">
<select id="getEmpById" resultType="employee" >
select * from tbl_employee where id = #{id}
</select>
<select id="getEmpById" resultType="employee" databaseId="mysql">
select * from tbl_employee where id = #{id}
</select>
<select id="getEmpById" resultType="employee" databaseId="oracle">
select * from tbl_employee where id = #{id}
</select>
</mapper>
総括する
1.インターフェースはプログラミング中です
原生: Dao -----> DaoImpl
Mybatis:マッパー-----> xxMapper.xml
2. SqlSessionは、データベースとのセッションを表します。データベースは、使い果たされたときに閉じる必要があります。
3. SqlSessionは、接続と同様に、スレッドセーフではありません。使用するたびに新しいオブジェクトを取得する必要があります
4.マッパーインターフェイスには実装クラスがありませんが、Mybatisはこのインターフェイスのプロキシオブジェクトを生成します(インターフェイスとxmlをバインドします)
EmployeeMapper empMapper = SqlSession.getMapper(Employee.class);
5.2つの重要な構成ファイル
Mybatisグローバル構成ファイル。データベース接続プール情報、トランザクションマネージャー情報、システム操作情報が含まれています
SQLマッピングファイル:各SQLステートメントのマッピング情報を保存します
SQLを抽出します