導入方法
MyBatis-Plusは、さまざまなユーザーのニーズに対応するために豊富な設定オプションを提供しています。これらの設定の一部はMyBatisネイティブでサポートされている設定を継承しており、もう一部はMyBatis-Plus特有の拡張設定です。
使用方法
Spring Boot 設定
Spring Boot プロジェクトでは、application.yml
または application.properties
ファイルを使用して MyBatis-Plus を設定できます。
mybatis-plus: configuration: # MyBatis 設定 map-underscore-to-camel-case: true global-config: # グローバル設定 db-config: # データベース設定 id-type: auto
Spring MVC の設定
従来の Spring MVC プロジェクトでは、XML 設定ファイルを使用して MyBatis-Plus を設定できます。
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="mapperLocations" value="classpath*:mapper/**/*.xml"/> <property name="typeAliasesPackage" value="com.your.domain"/> <!-- その他の設定 --></bean>
基本機能
MyBatis-Plus は、MyBatis を強化したツールです。MyBatis のすべての機能に加えて、多くの便利な機能を提供します。これにより、開発効率が大幅に向上し、コードの記述量が削減されます。
MyBatis-Plus の主な特徴は以下の通りです:
- 豊富な CRUD 操作: 一般的なデータベース操作のための組み込みメソッドを提供します
- 強力な条件コンストラクタ: 複雑なクエリ条件を簡単に構築できます
- コードジェネレータ: エンティティ、マッパー、サービス、コントローラーのコードを自動生成します
- ページネーションサポート: 多様なデータベースに対応したページネーション機能を提供します
- パフォーマンス分析: SQL 実行のパフォーマンス分析とブロッキングの検出をサポートします
- グローバルなインターセプタ: データの権限管理や論理削除などの機能を実装できます
主な利点
- 学習コストが低い: MyBatis に精通している開発者はすぐに習得できます
- 柔軟性が高い: カスタム SQL を引き続き使用できます
- 強力な拡張性: プラグインメカニズムを通じて簡単に拡張できます
- アクティブなコミュニティ: 活発なコミュニティサポートと継続的なメンテナンス
クイックスタート
// Spring Boot アプリケーションでの使用例@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}
<!-- Maven 依存関係 --><dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新バージョン</version></dependency>
configLocation
- タイプ:
String
- デフォルト値:
null
MyBatis 設定ファイルの場所を指定します。個別の MyBatis 設定ファイルが存在する場合、そのパスを configLocation
に設定する必要があります。
設定例:
mybatis-plus: config-location: classpath:/mybatis-config.xml
mapperLocations
- タイプ:
String[]
- デフォルト値:
["classpath*:/mapper/**/*.xml"]
MyBatis Mapper に対応する XML ファイルの場所を指定します。Mapper にカスタムメソッドが存在する場合、この設定が必要です。
設定例:
mybatis-plus: mapper-locations: classpath:/mapper/**.xml
typeAliasesPackage
- タイプ:
String
- デフォルト値:
null
MyBatis のエイリアスパッケージスキャンパスを指定します。このパッケージ内のクラスにエイリアスを登録するために使用されます。登録後、Mapper に対応する XML ファイルでは、完全修飾クラス名を使用せずにクラス名を直接使用できます。
設定例:
mybatis-plus: type-aliases-package: com.your.domain
typeAliasesSuperType
- タイプ:
Class<?>
- デフォルト値:
null
typeAliasesPackage
と併用して、指定された親クラスのサブクラスのみをスキャンします。
設定例:
mybatis-plus: type-aliases-super-type: com.your.domain.BaseEntity
typeHandlersPackage
- タイプ:
String
- デフォルト値:
null
TypeHandlerのスキャンパッケージを指定します。カスタム型変換器を登録するために使用されます。
設定例:
mybatis-plus: type-handlers-package: com.your.typehandlers
typeEnumsPackage
- タイプ:
String
- デフォルト値:
null
バージョン 3.5.2 以降、この設定は無効となり、汎用列挙型機能は設定なしで使用できるようになりました。
checkConfigLocation Spring Boot Only
- タイプ:
boolean
- デフォルト値:
false
起動時に MyBatis の XML ファイルの存在をチェックするかどうかを指定します。デフォルトではチェックしません。
設定例:
mybatis-plus: check-config-location: true
executorType Spring Boot Only
- タイプ:
ExecutorType
- デフォルト値:
simple
MyBatis の実行器タイプを指定します。SIMPLE
、REUSE
、BATCH
が利用可能です。
設定例:
mybatis-plus: executor-type: reuse
configurationProperties
- タイプ:
Properties
- デフォルト値:
null
外部化された MyBatis Properties 設定を指定します。設定を分離し、異なる環境での設定デプロイを実現するために使用されます。
設定例:
mybatis-plus: configuration-properties: classpath:/mybatis-properties.properties
設定
- タイプ:
Configuration
- デフォルト値:
null
ネイティブ MyBatis がサポートする設定です。詳細は Configuration を参照してください。
globalConfig
- タイプ:
com.baomidou.mybatisplus.core.config.GlobalConfig
- デフォルト値:
GlobalConfig::new
MyBatis-Plus のグローバル戦略設定です。詳細については GlobalConfig を参照してください。
設定例:
mybatis-plus: global-config: db-config: table-prefix: tbl_ id-type: auto
設定
MyBatis-Plus の Configuration
設定は MyBatis ネイティブでサポートされている設定を継承しています。これは、MyBatis XML 設定ファイルの形式で設定できるほか、Spring Boot または Spring MVC の設定ファイルで設定することも可能であることを意味します。
mapUnderscoreToCamelCase
- タイプ:
boolean
- デフォルト値:
true
自動キャメルケース命名規則のマッピングを有効にします。これは、古典的なデータベース列名 A_COLUMN(スネークケース)から古典的な Java プロパティ名 aColumn(キャメルケース)への類似マッピングです。
設定例:
mybatis-plus: configuration: map-underscore-to-camel-case: true
defaultEnumTypeHandler
- タイプ:
Class<? extends TypeHandler>
- デフォルト値:
org.apache.ibatis.type.EnumTypeHandler
デフォルトの列挙型処理クラスです。このプロパティを設定すると、列挙型はすべて指定されたプロセッサで処理されます。
設定例:
mybatis-plus: configuration: default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler
aggressiveLazyLoading
- タイプ:
boolean
- デフォルト値:
true
true
に設定すると、遅延読み込みオブジェクトは任意の遅延プロパティによって完全に読み込まれる可能性があります。それ以外の場合、各プロパティは必要に応じて読み込まれます。lazyLoadingEnabled
と併用する必要があります。
設定例:
mybatis-plus: configuration: aggressive-lazy-loading: false
autoMappingBehavior
- タイプ:
AutoMappingBehavior
- デフォルト値:
partial
MyBatis の自動マッピング戦略です。この設定により、MyBatis がデータベースのテーブルフィールドとオブジェクトのプロパティを自動的にマッピングするかどうか、およびその方法を指定できます。
- AutoMappingBehavior.NONE:自動マッピングを有効にしません
- AutoMappingBehavior.PARTIAL:ネストされていない resultMap に対してのみ自動マッピングを行います
- AutoMappingBehavior.FULL:すべての resultMap に対して自動マッピングを行います
設定例:
mybatis-plus: configuration: auto-mapping-behavior: full
autoMappingUnknownColumnBehavior
- タイプ:
AutoMappingUnknownColumnBehavior
- デフォルト値:
NONE
MyBatis の自動マッピング時に未知のカラムまたは未知のプロパティが検出された場合の処理戦略を設定します。この設定により、MyBatis が自動マッピングプロセス中に未知のカラムまたは未知のプロパティに遭遇した場合の処理方法を指定できます。
- AutoMappingUnknownColumnBehavior.NONE:何も処理を行いません(デフォルト値)
- AutoMappingUnknownColumnBehavior.WARNING:関連する警告情報をログとして出力します
- AutoMappingUnknownColumnBehavior.FAILING:マッピング失敗として処理し、例外と詳細情報をスローします
設定例:
mybatis-plus: configuration: auto-mapping-unknown-column-behavior: warning
localCacheScope
- タイプ:
String
- デフォルト値:
SESSION
MyBatis の 1 次キャッシュを設定します。デフォルトは SESSION
です。
SESSION
:セッションレベルのキャッシュ。同じ Session 内での同一のクエリは、再度データベースに問い合わせませんSTATEMENT
:1 次キャッシュを無効化します
設定例:
mybatis-plus: configuration: local-cache-scope: statement
cacheEnabled
- タイプ:
boolean
- デフォルト値:
true
MyBatisのセカンダリキャッシュを有効にするかどうかを設定します。
設定例:
mybatis-plus: configuration: cache-enabled: false
callSettersOnNulls
- タイプ:
boolean
- デフォルト値:
false
結果セットの値が null の場合に、マッピングオブジェクトの Setter メソッド(Map オブジェクトの場合は put メソッド)を呼び出すかどうかを指定します。通常は、Map.keySet() への依存や null 値の初期化が必要な場合に使用されます。
設定例:
mybatis-plus: configuration: call-setters-on-nulls: true
configurationFactory
- タイプ:
Class<?>
- デフォルト値:
null
Configuration インスタンスを提供するファクトリクラスを指定します。このファクトリが生成するインスタンスは、デシリアライズされたオブジェクトの遅延読み込みプロパティ値をロードするために使用されます。ファクトリクラスは static Configuration getConfiguration()
というシグネチャを持つメソッドを含んでいる必要があります。
設定例:
mybatis-plus: configuration: configuration-factory: com.your.config.MyConfigurationFactory
GlobalConfig
GlobalConfig
は MyBatis-Plus が提供するグローバル戦略設定であり、開発者が MyBatis-Plus の動作をグローバルにカスタマイズすることを可能にします。
banner
- タイプ:
boolean
- デフォルト値:
true
コンソールに MyBatis-Plus の LOGO を出力するかどうかを制御します。
設定例:
mybatis-plus: global-config: banner: false
enableSqlRunner
- タイプ:
boolean
- デフォルト値:
false
SqlRunner
(com.baomidou.mybatisplus.extension.toolkit.SqlRunner
)の初期化を制御します。
設定例:
mybatis-plus: global-config: enable-sql-runner: true
sqlInjector
- タイプ:
com.baomidou.mybatisplus.core.injector.ISqlInjector
- デフォルト値:
com.baomidou.mybatisplus.core.injector.DefaultSqlInjector
SQL インジェクターは、MyBatis-Plus が提供する汎用メソッドを注入するために使用されます。Starter 環境下では @Bean
による注入をサポートしています。
設定例:
mybatis-plus: global-config: sql-injector: com.baomidou.mybatisplus.core.injector.DefaultSqlInjector
@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor()); return interceptor;}
superMapperClass
- タイプ:
Class
- デフォルト値:
com.baomidou.mybatisplus.core.mapper.Mapper.class
汎用 Mapper の親クラスです。この親クラスのサブクラスである Mapper のみが、sqlInjector
内のメソッドを注入します。
metaObjectHandler
- タイプ:
com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
- デフォルト値:
null
メタオブジェクトフィールド自動挿入コントローラーです。エンティティクラスのフィールドを自動的に設定するために使用されます。Starter環境下では@Bean
による注入をサポートしています。
設定例:
mybatis-plus: global-config: meta-object-handler: com.example.MyMetaObjectHandler
@Beanpublic MetaObjectHandler metaObjectHandler() { return new MyMetaObjectHandler();}
identifierGenerator Since 3.3.0
- タイプ:
com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator
- デフォルト値:
com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator
ID ジェネレーターは、エンティティクラスの一意な識別子を生成するために使用されます。Starter 環境では@Bean
による注入をサポートしています。
設定例:
mybatis-plus: global-config: identifier-generator: com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator
@Beanpublic IdentifierGenerator identifierGenerator() { return new CustomIdentifierGenerator();}
dbConfig
- タイプ:
com.baomidou.mybatisplus.core.config.GlobalConfig$DbConfig
- デフォルト値:
null
MyBatis-Plus グローバル戦略における DB 戦略設定です。詳細については DbConfig を参照してください。
設定例:
mybatis-plus: global-config: db-config: table-prefix: tbl_ id-type: ASSIGN_ID
DbConfig
idType
- タイプ:
com.baomidou.mybatisplus.annotation.IdType
- デフォルト値:
ASSIGN_ID
グローバルなデフォルトの主キータイプです。
IdType.AUTO
:データベースの自動増分IDを主キーとして使用します。IdType.NONE
:特定の生成戦略はありません。グローバル設定にIdType関連の設定がある場合は、グローバル設定に従います。IdType.INPUT
:データ挿入前に、ユーザー自身が主キー値を設定します。IdType.ASSIGN_ID
:ID
を自動的に割り当てます。Long
、Integer
、String
タイプの主キーに適用されます。デフォルトでは、雪花アルゴリズムをIdentifierGenerator
のnextId
で実装しています。 @since 3.3.0IdType.ASSIGN_UUID
:UUID
を自動的に割り当てます。String
タイプの主キーに適用されます。デフォルトの実装はIdentifierGenerator
のnextUUID
メソッドです。 @since 3.3.0
設定例:
mybatis-plus: global-config: db-config: id-type: ASSIGN_ID
tablePrefix
- タイプ:
String
- デフォルト値:
null
テーブル名のプレフィックス
設定例:
mybatis-plus: global-config: db-config: table-prefix: tbl_
schema
- タイプ:
String
- デフォルト値:
null
データベースのスキーマ名を指定します。通常は設定する必要はありません。
設定例:
mybatis-plus: global-config: db-config: schema: my_schema
columnFormat
- タイプ:
String
- デフォルト値:
null
SQL生成時にフィールド名をフォーマットするために使用されます。例えば、プレフィックスやサフィックスを追加する場合などです。主キーには無効です。例: %s
設定例:
mybatis-plus: global-config: db-config: column-format: %s_field
tableFormat Since 3.5.3.2
- タイプ:
String
- デフォルト値:
null
SQL生成時にテーブル名をフォーマットします。例: %s
設定例:
mybatis-plus: global-config: db-config: table-format: tbl_%s
propertyFormat Since 3.3.0
- タイプ:
String
- デフォルト値:
null
Entityのフィールドがデータベースフィールドにマッピングされる際のフォーマットに使用されます。column as property
の場合のみ有効で、主キーには適用されません。例: %s
。
設定例:
mybatis-plus: global-config: db-config: property-format: %s_prop
tableUnderline
- タイプ:
boolean
- デフォルト値:
true
テーブル名にキャメルケースからスネークケースへの変換を使用するかどうかを制御します。
設定例:
mybatis-plus: global-config: db-config: table-underline: false
capitalMode
- タイプ:
boolean
- デフォルト値:
false
テーブル名とフィールド名で大文字命名を使用するかどうかを制御します。
設定例:
mybatis-plus: global-config: db-config: capital-mode: true
keyGenerator
- タイプ:
com.baomidou.mybatisplus.core.incrementer.IKeyGenerator
- デフォルト値:
null
カスタムテーブル主キージェネレーターを設定します。Starter環境下では@Bean
による注入をサポートしています。
設定例:
mybatis-plus: global-config: db-config: key-generator: com.example.CustomKeyGenerator
@Beanpublic IKeyGenerator keyGenerator() { return new CustomKeyGenerator();}
logicDeleteField
- タイプ:
String
- デフォルト値:
null
グローバルな Entity 論理削除フィールド属性名。論理削除機能が有効な場合のみ効果があります。
設定例:
mybatis-plus: global-config: db-config: logic-delete-field: deleted
logicDeleteValue
- タイプ:
String
- デフォルト値:
1
論理削除済み値を示す値。論理削除機能が有効な場合のみ適用されます。
設定例:
mybatis-plus: global-config: db-config: logic-delete-value: true
logicNotDeleteValue
- タイプ:
String
- デフォルト値:
0
論理削除されていない値を示す値で、論理削除機能が有効な場合のみ適用されます。
設定例:
mybatis-plus: global-config: db-config: logic-not-delete-value: false
insertStrategy
- タイプ:
com.baomidou.mybatisplus.annotation.FieldStrategy
- デフォルト値:
NOT_NULL
Insert 時のフィールド検証戦略を制御します。
- FieldStrategy.DEFAULT:グローバル設定の戦略に従います。グローバル設定が指定されていない場合、デフォルトの動作はフィールド値が NULL でない場合にのみそのフィールドを挿入します。
- FieldStrategy.ALWAYS:フィールド値が NULL かどうかに関わらず、常にそのフィールドを挿入します。
- FieldStrategy.NOT_NULL:フィールド値が NULL でない場合にのみ、そのフィールドを挿入します。
- FieldStrategy.NOT_EMPTY:フィールド値が空でない(文字列型の場合)または NULL でない(その他の型の場合)場合にのみ、そのフィールドを挿入します。
- FieldStrategy.NEVER:フィールド値が NULL でない場合でも、そのフィールドを挿入しません。
- FieldStrategy.IGNORED:判定を無視します。効果は “ALWAYS” と同じです @Deprecated
設定例:
mybatis-plus: global-config: db-config: insert-strategy: NEVER
updateStrategy
- タイプ:
com.baomidou.mybatisplus.annotation.FieldStrategy
- デフォルト値:
NOT_NULL
Update 時のフィールド検証戦略を制御します。
設定例:
mybatis-plus: global-config: db-config: update-strategy: IGNORED
whereStrategy
- タイプ:
com.baomidou.mybatisplus.annotation.FieldStrategy
- デフォルト値:
NOT_NULL
Update 時のフィールド検証戦略を制御します。これは、Wrapper が内部の Entity に基づいて生成する Where 条件です。
設定例:
mybatis-plus: global-config: db-config: where-strategy: ALWAYS