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は同じカバンにありますか?名前は同じですか?
  ,    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時間余り苦しめて、みんなは直ちに発見します。