org.apache.ibatis.binding.BindingException【原因まとめ】
1314 ワード
ネットで見つけた資源は、自分で整理して、元のものを裏切らないように整理しています。
背景:Spring統合Mybatis
エラー:org.apache.ibatis.binding.BindingException:Invalid bound statement(not found)
つまり、あなたのMapperインターフェースは、Springに注入された後、正常にmapper.xmlのsqlを使用することができません。
ここのSpring注入後の意味は、あなたのインターフェースがスキャンされたということですが、Springがプロキシ(MyBatistaが実現した)の実装クラスに注入してみたら、正常に使えなくなりました。ここで発生する可能性のある状況は以下の通りです。
1、インターフェースはスキャンされましたが、プロキシオブジェクトが見つかりませんでした。注入を試みても、エラーを注入するオブジェクトです。
2、インターフェースはスキャンされました。プロキシオブジェクトが見つかりました。インターフェースにも注入されましたが、ある具体的な方法を呼び出すと、(他の方法は正常かもしれません)は使えません。
3、mapperインターフェースとmapper.xmlは同じカバンにありますか?名前は同じですか?
最後に、もしあなたのプロジェクトがmavenプロジェクトなら、コンパイルしてください。インターフェースのあるディレクトリを見てください。対応するxmlファイルは生産されていない可能性があります。mavenはデフォルトではコンパイルされていませんので、pom.xmlの中に必要です。
私はつまり第5時の上で穴を掘って、4時間余り苦しめて、みんなは直ちに発見します。
背景:Spring統合Mybatis
エラー:org.apache.ibatis.binding.BindingException:Invalid bound statement(not found)
つまり、あなたのMapperインターフェースは、Springに注入された後、正常にmapper.xmlのsqlを使用することができません。
ここのSpring注入後の意味は、あなたのインターフェースがスキャンされたということですが、Springがプロキシ(MyBatistaが実現した)の実装クラスに注入してみたら、正常に使えなくなりました。ここで発生する可能性のある状況は以下の通りです。
1、インターフェースはスキャンされましたが、プロキシオブジェクトが見つかりませんでした。注入を試みても、エラーを注入するオブジェクトです。
2、インターフェースはスキャンされました。プロキシオブジェクトが見つかりました。インターフェースにも注入されましたが、ある具体的な方法を呼び出すと、(他の方法は正常かもしれません)は使えません。
3、mapperインターフェースとmapper.xmlは同じカバンにありますか?名前は同じですか?
, NameMapper.java; xml NameMapper.xml
4、mapper.xmlの名前空間はmapperインターフェースのパケット名と一致していますか? , com.abc.dao, NameMapper.java, mapper.xml namespace com.abc.dao.NameMapper
5、インターフェースの方法名は、xmlの中のsqlラベルのidと一致しています。 , List findAll(); , xml
6、maven環境資源を配置するインターフェース内の戻り値Listセット(他の集合も知らない)の場合、xml内の構成は、できるだけresultMap(resultMapの配置が正しいことを保証する)を使用して、resultType を使用しないでください。最後に、もしあなたのプロジェクトがmavenプロジェクトなら、コンパイルしてください。インターフェースのあるディレクトリを見てください。対応するxmlファイルは生産されていない可能性があります。mavenはデフォルトではコンパイルされていませんので、pom.xmlの中に必要です。
私はつまり第5時の上で穴を掘って、4時間余り苦しめて、みんなは直ちに発見します。