MyBatisの設定

設定は、MyBatis で最も複雑な構成です。MyBatis の基本的な動作に重大な影響を与える可能性がありますが、ほとんどの場合、デフォルト値で実行できるため、ほとんどの場合、大量に構成する必要はなく、必要なのは、自動マッピング、キャメルケースの名前付けマッピング、カスケード ルール、キャッシュを有効にするかどうか、Executor タイプなど、一般的に使用されるルールを変更するだけで十分です。設定構成項目の説明を表 1 に示します。

表1 設定項目の説明
構成アイテム 効果 構成オプション デフォルト
キャッシュ有効 この設定は、すべてのマッパーの設定キャッシュのグローバル スイッチに影響します。 true|false 真実
遅延読み込み有効 遅延読み込み用のグローバル スイッチ。有効にすると、関連するすべてのオブジェクトが遅延ロードされます。特定の関係では、項目のスイッチ状態は fetchType 属性を設定することでオーバーライドできます。  true|false 間違い
アグレッシブなLazyLoading 有効にすると、遅延プロパティを呼び出すと、遅延ロードされたプロパティを持つオブジェクトが完全にロードされます。それ以外の場合、各プロパティはオンデマンドでロードされます。 脅威|フェルス バージョン 3.4.1 (含まれていない)
より前は true 、バージョン 3.4.1 以降は false
複数の結果セットが有効  1 つのステートメントが複数の結果セットを返すことを許可するかどうか (互換性のあるドライバーが必要) true|false 真実
useColumnLabel 列名の代わりに列ラベルを使用します。ドライバーが異なればパフォーマンスも異なります。詳細については、関連するドライバーのドキュメントを参照するか、これら 2 つの異なるモードをテストして使用したドライバーの結果を観察してください。 true|false 真実
useGeneratedKeys JDBC が主キーの自動生成をサポートできるようにするには、ドライバーの互換性が必要です。true に設定すると、この設定により自動生成された主キーの使用が強制されます。ただし、一部のドライバーには互換性がなくても機能します (Derby など)。 true|false 間違い
自動マッピング動作 MyBatis が列をフィールドまたはプロパティに自動的にマップする方法を指定します。
NONE は自動マッピングをキャンセルすることを意味します。
PARTIAL は、自動的にマップされるだけであり、ネストされた結果セットとマップされた結果セットは定義されないことを意味します。
FULL は、(ネストされているかどうかに関係なく) 任意の複雑な結果セットを自動的にマップします。
なし、一部、完全 部分的
autoMappingUnknownColumnBehavior 自動マップ内の不明な列 (または不明な属性タイプ) の動作を指定します。デフォルトでは処理なし、ログレベルがWARNレベル以下の場合のみ該当ログが表示されます、処理に失敗した場合はSqlSessionExceptionがスローされます なし、警告、失敗 なし
デフォルトエグゼキュータタイプ デフォルトのエグゼキュータを構成します。SIMPLE は通常の実行プログラムです。REUSE は準備されたステートメントを再利用します。BATCH 実行プログラムはステートメントを再利用してバッチ更新を実行します。  シンプル、再利用、バッチ 単純
デフォルトステートメントタイムアウト タイムアウトを設定します。これにより、ドライバーがデータベースからの応答を待つ秒数が決まります。 任意の正の整数 未設定 (null)
デフォルトフェッチサイズ デフォルトでデータベースドライバーによって返されるレコード数の制限を設定します。このパラメーターはリセットできます。 任意の正の整数   未設定 (null)
safeRowBoundsEnabled ネストされたステートメントでページネーション (RowBounds) を許可します。許可される場合は false を設定します true|false 間違い
safeResultHandlerEnabled ネストされたステートメントでページネーション (ResultHandler) を許可します。許可される場合は false を設定します true|false 真実
マップアンダースコアをキャメルケースに 自動キャメルケース マッピング、つまり、クラシック データベース列名 A_COLUMN からクラシック Javaプロパティ名 aColumn への 同様のマッピングを有効にするかどうか。 true|false 間違い

ローカルキャッシュスコープ

MyBatis 利用本地缓存机制(Local Cache)防止循环引用(circular references)和加速联复嵌套査询。
默认值为 SESSION,这种情况下会缓存一个会话中执行的所有查询。若设置值为 STATEMENT,本地会话仅用在语句执行上,对相同 SqlScssion 的不同调用将不会共享数据  
SESSION|STATEMENT SESSION

jdbcTypeForNull

当没有为参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。某些驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER NULL、VARCHAR、OTHER   OTHER

lazyLoadTriggerMethods

指定哪个对象的方法触发一次延迟加载 equals、clone、hashCode、toString

defaultScriptingLanguage

指定动态 SQL 生成的默认语言 org.apache.ibatis
.script.ing.xmltags
.XMLDynamicLanguageDriver

callSettersOnNulls

指定当结果集中值为 null 时,是否调用映射对象的 setter(map 对象时为 put)方法,这对于 Map.kcySet() 依赖或 null 值初始化时是有用的。注意,基本类型(int、boolean 等)不能设置成 null true|false false

logPrefix

指定 MyBatis 增加到日志名称的前缀  任何字符串 Not set

loglmpl

指定 MyBatis 所用日志的具体实现,未指定时将自动査找 SLF4J|LOG4J|LOG4J2|JDK_LOGGING
|COMMONS_LOGGING
|ST DOUT_LOGGING|NO_LOGGING
Not set
proxyFactory 指定 MyBatis 创建具有延迟加栽能力的对象所用到的代理工具 CGLIB|JAVASSIST JAVASSIST (MyBatis 版本为 3.3 及以上的)
vfsImpl 指定 VFS 的实现类   提供 VFS 类的全限定名,如果存在多个,可以使用逗号分隔  Not set
useActualParamName 允许用方法参数中声明的实际名称引用参数。要使用此功能,项目必须被编译为 Java 8 参数的选择。(从版本 3.4.1 开始可以使用) true|false true

settings 的配置项很多,但是真正用到的不会太多,我们把常用的配置项研究清楚就可以了,比如关于缓存的 cacheEnabled,关于级联的 lazyLoadingEnabled 和 aggressiveLazy Loading,关于自动映射的 autoMappingBehavior 和 mapUnderscoreToCamelCase,关于执行器类型的 defaultExecutorType 等。

这里给出一个全量的配置样例,如下所示。

<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>

おすすめ

転載: blog.csdn.net/unbelievevc/article/details/132289609