Mybatis + Java + SpringBoot4
パッケージ割を変えたら、
Mapper XMLのSQLを実行できなくなった・・・。
JavaのRepositoryで定義したメソッドと紐づけできなくなったらしい。
エラー内容
Invalid bound statement (not found)
原因
MyBatisConfigのJavaクラスで定義している@MapperScanのベースパッケージ
@MapperScan(basepackage="com.example.xxx.yyy.zzz")
- レポジトリ(Javaクラス)の場所
com.example.xxx.yyy.zzz.aaa.bbbパッケージに配置。 - Mapper XML ファイルの場所
src/main/resource/xxx/yyy/zzz/aaa/bbbフォルダに配置。
解決
-
Mapper XMLファイルの場所
MapperScanと同じ階層に配置する
src/main/resource/xxx/yyy/zzz
なにがわかったか
-
JavaのRepositoryクラスはパッケージをMapperScanより深く配置してもよい。
- おそらく、@Mapperアノテーションを付与しておくことが前提・・・
-
Mapper XMLファイルの場所は、@MapperScanのbasepackageと同階層にすること。
- より深く掘ると再帰的に探してくれないのでダメ
今後の展望
- Mapper XMLファイルを分類してフォルダを分けて管理する方法はあるか。。。?をしりたい。