MyBatis設定ファイルの構造は次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 配置 -->
<properties /><!-- 属性 -->
<settings /><!-- 设置 -->
<typeAliases /><!-- 类型命名 -->
<typeHandlers /><!-- 类型处理器 -->
<objectFactory /><!-- 对象工厂 -->
<plugins /><!-- 插件 -->
<environments><!-- 配置环境 -->
<environment><!-- 环境变量 -->
<transactionManager /><!-- 事务管理器 -->
<dataSource /><!-- 数据源 -->
</environment>
</environments>
<databaseIdProvider /><!-- 数据库厂商标识 -->
<mappers /><!-- 映射器 -->
</configuration>
mybatis-config.xml ファイル内の要素ノードは特定の順序になっており、ノードの位置は上記の位置に従ってソートする必要があります。そうしないとコンパイル エラーが発生します。
構成要素は XML 構成ファイル全体のルート ノードであり、その役割は MyBatis の管理者に相当し、すべての MyBatis 構成情報が格納されます。
プロパティタグ
プロパティ タグは、リソース属性を通じて外部プロパティ ファイル (database.properties) を指定することも、プロパティ サブ要素を通じて構成することもできます。
1. ファイルを指定する
プロパティを使用して外部ファイルを指定します。コードは次のとおりです。
<properties resource="mybatisDemo/resources/database.properties"/>
Database.properties は、データベース ドライバー、データベースに接続するための URL、データベース ユーザー名、データベース パスワードなど、データベース接続に関連する設定を記述するために使用されます。
2.プロパティのサブ要素の構成
プロパティのサブ要素のプロパティを使用してユーザー名とパスワードの変数を構成し、環境ノードでこれらの変数を参照します。
<properties>
<property name="username" value="root"/>
<property name="password" value="root"/>
</properties>
環境ノードでユーザー名とパスワードの変数を参照します。
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
また、propertiesタグを使用せずに、valueに属性値を直接記述することもできます。
設定タグ
settings タグは、MyBatis の実行時の動作を構成するために使用されます。これは、MyBatis の基礎となる操作に大きな影響を与える可能性があります。通常、多くの構成は必要ありません。ほとんどの場合、デフォルト値を使用できます。
設定には多くの設定項目がありますが、実際に使用する項目は多くないので、よく使用される設定を明確に学習することができます。設定における共通の設定項目の説明を次の表に示します。
設定項目 | 効果 | 構成オプション | デフォルト値 |
---|---|---|---|
キャッシュ有効 | この設定は、すべてのマッパーの設定キャッシュのグローバル スイッチに影響します。 | true|false | 真実 |
遅延読み込み有効 | 遅延読み込み用のグローバル スイッチ。有効にすると、関連するすべてのオブジェクトが遅延してロードされます。特定の関連付けでは、項目のスイッチ状態は fetchType 属性を設定することでオーバーライドできます。 | true|false | 間違い |
アグレッシブなLazyLoading | 有効にすると、遅延プロパティを呼び出すと、遅延プロパティを持つオブジェクトが完全に読み込まれます。それ以外の場合、各プロパティはオンデマンドで読み込まれます。 | true|false | デフォルト値は、バージョン 3.4.1 (含まれていない)より前は true 、バージョン 3.4.1 以降は falseです。 |
自動マッピング動作 | MyBatis が列をフィールドまたはプロパティに自動的にマップする方法を指定します。 NONE は自動マッピングをキャンセルすることを意味します。 PARTIAL は、自動的にマップされるだけであり、ネストされた結果セットとマップされた結果セットは定義されないことを意味します。 FULL は、(ネストされているかどうかに関係なく) 任意の複雑な結果セットを自動的にマップします。 |
なし、一部、完全 | 部分的 |
デフォルトエグゼキュータタイプ | デフォルトのエグゼキュータを構成します。SIMPLE は通常の実行プログラムです。REUSE は準備されたステートメントを再利用します。BATCH 実行プログラムはステートメントを再利用してバッチ更新を実行します。 | シンプル、再利用、バッチ | 単純 |
マップアンダースコアをキャメルケースに | 自動キャメルケース命名規則マッピング、つまり、クラシック データベース列名 A_COLUMN からクラシック Java 属性名 aColumn への同様のマッピングを有効にするかどうか。 | true|false | 間違い |
構成例:
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="multipleResultSetsEnabled" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="useGeneratedKeys" value="false"/>
<setting name="autoMappingBehavior" value="PARTIAL"/>
<setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
<setting name="defaultExecutorType" value="SIMPLE"/>
<setting name="defaultStatementTimeout" value="25"/>
<setting name="defaultFetchSize" value="100"/>
<setting name="safeRowBoundsEnabled" value="false"/>
<setting name="mapUnderscoreToCamelCase" value="false"/>
<setting name="localCacheScope" value="SESSION"/>
<setting name="jdbcTypeForNull" value="OTHER"/>
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>
typeAliases タグ
クラスの完全修飾名をどこでも指定しないようにするには、typeAliases タグを使用してエイリアスを定義します。
typeHandlers タグ
typeHandlers は主に取得した値を Java 型に合理的に変換します。typeHandler では、jdbcType と javaType に分かれており、jdbcType はデータベースの型を定義するために使用され、javaType は Java の型を定義するために使用されます。typeHandler の役割は、jdbcType と javaType の間の相互変換を引き受けることです。
MyBatis はカスタム処理タイプをサポートしており、処理タイプをカスタマイズする場合は、 org.apache.ibatis.type.TypeHandler インターフェースを実装するか、 org.apache.ibatis.type.BaseTypeHandle クラスを継承する必要があります。詳細については、公式 Web サイトを参照してください: mybatis – MyBatis 3 | 構成
環境タグ
「環境」タブでは、MyBatis の複数のオペレーティング環境を構成し、SQL を複数の異なるデータベースにマップできます。
環境は環境のサブタグであり、MyBatis の一連の動作環境を設定するために使用され、動作環境 ID、トランザクション管理、データソース構成などの関連情報を指定する必要があります。
複数の環境タグを設定することで複数のデータベースに接続できますが、そのうちの 1 つをデフォルトの動作環境 (default で指定) として指定する必要があることに注意してください。
環境タグには、transactionManager と dataSource という 2 つのサブタグが用意されています。
トランザクションマネージャータグ
MyBatis は、JDBC と MANAGED という 2 つのトランザクション マネージャーをサポートしています。
JDBC タイプのトランザクション マネージャーが使用される場合、アプリケーション サーバーはコミットやロールバックなどのトランザクション管理操作を担当します。管理タイプのトランザクション マネージャーを使用する場合、アプリケーション サーバーは接続ライフ サイクルを管理します。
データソースタグ
接続するデータベースのドライバー名、URL、ユーザー名、パスワードなど、データベースの接続プロパティを構成するために使用されます。
dataSourceのtype属性はデータソースの種類を指定するもので、以下の3種類があります。
1)非プール化
UNPOOLED にはデータベース接続プールがなく、非効率です。MyBatis はデータベース操作ごとに接続を開いたり閉じたりする必要がありますが、少し遅いため、通常は単純なアプリケーションで使用されます。
2) パーティー
POOLED データ ソース タイプの場合、MyBatis はデータベース接続プールを維持します。また、データベース操作ごとに、MyBatis は接続プールからの接続を使用し、操作の完了後に接続をプールに返します。新しい接続を作成するために必要な初期接続と認証時間が短縮されました。
3)JNDI
JNDI データ ソース タイプの場合、MyBatis は JNDI データ ソースから接続を取得します。
dataSource タグのサンプル コードは次のとおりです。
<dataSource type="POOLED">
<!-- MySQL数据库驱动 -->
<property name="driver" value="com.mysql.jdbc.Driver" />
<!-- 连接数据库的URL -->
<property name="url"
value="jdbc:mysql://localhost:3306/test?characterEncoding=utf8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
マッパータグ
マッパータグは、MyBatis SQL マッピング ファイルのパスを指定するために使用されます。
マッパーはマッパーのサブタグです。マッパーのリソース属性は、SQL マッピング ファイルのパス (クラス リソース パス) を指定するために使用されます。たとえば、SQL マッピング ファイルの名前は Student.xml で、次の場所にあります
。 net.cky.mapper という名前のパッケージ。次のように構成できます。
<mappers>
<mapper resource="net/cky/mapper/Student.xml"/>
</mappers>