spring-boot + MyBatis
spring boot と MyBatis の組み合わせで利用するためには mybatis-spring-boot-autoconfigure を利用します。
build.gradle に以下のように依存を記述します(最新版使わないとプロパティ名が違ったりしてハマるので注意。開発が活発なので常に最新版を使うのがお勧めです)。
dependencies {
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2'
implementation 'org.mybatis:mybatis-typehandlers-jsr310:1.0.2'
}
application.yml に以下のように記述します。
mybatis:
configuration:
# lower_case のカラム名を camelCase のプロパティにマッピングする
mapUnderscoreToCamelCase: true
defaultFetchSize: 100
defaultStatementTimeout: 30
# マッピング不能なフィールドがあったときの処理。
# NONE: 何もしない
# WARNING: WARN ログを出す(お勧め。org.apache.ibatis.session.AutoMappingUnknownColumnBehavior で WARN です)
# FAILING: Fail mapping (Throw SqlSessionException) (local 開発時のみオンにすると良いでしょう)
autoMappingUnknownColumnBehavior: FAILING
# タイプハンドラの適用
type-handlers-package: com.example.typehandler
mybatis-boot-starter は @Mapper
アノテーションが書いてあるクラスをスキャンするので、各マッパークラスには @Mapper
アノテーションをお忘れなく。
基本的にはこれだけで mybatis が利用可能です。 DataSource の設定については HikariCPの設定方法 を参照してください。
詳細については mybatis-spring-boot-starterの使い方 が詳しいのでご参照ください。
IntelliJ で MyBatis のアノテーションに injection したい
assets/mybatis-intellij-language-injections.xml にアノテーションから自動設定するための XML ファイルを置きましたので、 各位で以下の画像を参考に設定してください。手で @Select, @Insert, @Delete, @Update にそれぞれ Cmd+Enter おして設定していっても同様の効果が得られます。
Database との連携設定をすると、annotation の中でも SQL のテーブル名・カラム名を補完しながらかけますので設定したほうが開発効率があがります。
Database との連携設定についてはこちら参照してください。 https://youtu.be/E8nX707UC9k
(これぐらいやってくれるプラグインがありそうだが、よくわからない)
IDEA-161637 で intellij idea 側に実装することが提案されています。
この設定をプロジェクト全体で共有したい
ここを押すと、設定スコープが project 単位になるので、.idea/IntelliLang.xml に設定が入るので、これをレポジトリに入れてしまうと良い。