0
0

Invalid bound statement (not found) 【Mybatisのエラー・ディレクトリ構成の見直しで解決】

Posted at

MyBatisのBindingExceptionエラーに悩んでいる方へ

マッパーファイルのパス設定に要注意

MyBatisを使用していると、次のようなエラーに遭遇することがある。

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

このエラーにしばらく悩まされていたが、原因は非常にシンプルだった。
単純だからこそ気づくのに時間がかかってしまっている人も多いかもしれない。

また、手動でディレクトリを一つずつ作成しているパターンなどはこの手のエラーで躓きやすいのではないかと感じたため、画像を添付しながら解説記事として残しておく。

エラーの原因

プロジェクトのディレクトリ構成において、Javaのパッケージ名に合わせて resources フォルダ下にも、同じようにディレクトリを配置する必要があり、構成が異なるとマッパーが、マッパーファイルの場所が正しく指定されていなかったことが原因であった。

例えば、次のような構造の場合:

  • src/main/java/appName/mapper/YourMapper.java

対応するマッパーファイルは、次の場所に配置しなければならない。

  • src/main/resources/appName/mapper/YourMapper.xml

Javaのパッケージと同様のディレクトリ構成を resources フォルダにも作成しなければならない。

例えば、ディレクトリ構造が下記のようになっているとエラーが解消される可能性がある
※上記のファイルパスのappNameが、画像だとimportAppという名前になっている
スクリーンショット 2024-09-19 212311.png

このディレクトリ構造が正しくないと、MyBatisは対応するマッパーファイルを見つけることができず、エラーが発生する。

解決策

このエラーが出た場合、まずは次の点を確認すべきであると思った。

  • resources フォルダ内のディレクトリ構成が正しいか?
  • マッパーファイルのパスがJavaパッケージと一致しているか?

自分もこの見落としに気づくまで時間を要したが、解決すればスムーズに動作するはずだ。
原因が他にある可能性も十分にあるが、まずディレクトリの構成を見直してみてもいいかもしれない。
少しでも参考になれば幸いである。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0