Spring Bootでは -parameters オプションは有効化されている
   2 min read

MyBatisの設定項目として useActualParamName というものがあります。マニュアルの説明によると、

ステートメントの引数を参照する際、メソッドシグネチャで宣言されている名前で参照できるようにします。 このオプションを有効にする場合、プロジェクトを Java 8 (コンパイラオプション -parameters 付き)でコンパイルする必要があります。 (導入されたバージョン: 3.4.1)

もう少し具体的には、

3.4.3 以降では、引数名を指定することによって arg 要素を順不同で記述できるようになりました。引数を名前で指定するためには、各引数に @Param アノテーションを追加するか、プロジェクトを '-parameters' オプション付きでコンパイルし、useActualParamName に true (デフォルト値です)を設定します。

とあります。説明されているセクションが期待するものと違うのでわかりにくい…

ちなみに @Param の意味を調べようと検索すると、説明には次のように書かれており、 useActualParamName という機能があることに気づかないので不親切に感じます。

Mapper メソッドが複数の引数を取る場合、このアノテーションを付加することで各引数を名前で参照できるようになります。アノテーションがない場合、各引数は位置を表す数字で #{param1}, #{param2} のように参照します(RowBounds 引数はカウントしません)。 引数に @Param("person") というアノテーションを付加すると、この引数は #{person} として参照できるようになります。

閑話休題。 この useActualParamName は引用部にある通りデフォルトで true ですが、実際に使うには -parameters オプション付きでコンパイルする必要があります。 この -parameters オプションはどうやって付ければ良いのでしょうか?

…というのを調べようとしたのですが、Spring Boot の場合、 spring-boot-starter-parent-parameters オプションが有効になるような設定が為されている ので、明示的に設定しなくても利用できます。