Springboot整合mybatis出现无法注入mapper接口的问题处理 - Go语言中文社区

Springboot整合mybatis出现无法注入mapper接口的问题处理


异常描述:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):com.sf.dao.UserMapper.selectByPrimaryKey


起初怀疑是在整合mybatis时的配置有错误,反复修改和测试发现配置都没问题。最后检查mapper.xml文件才发现namespace的定义路径名字与mapper接口的路径与名字不一致。
本人是通过Mybatis Generator自动生成的代码文件。通过这个异常才发现里边这个坑,mapper的xml文件和接口文件如果你想放在同一个包下边,那么使用Mybatis Generator自动生成的代码文件是完全没问题的,但是如果你想把mapper接口和xml文件分开放置,就需要注意生成后的mapper namespace路径会是你配置的sqlMapGeneratortargetPackage="mybatis.mapper"的路径,然后上边的异常就在你使用mapper接口时出现了。


解决办法就是将生成后的mapper.xml文件中的namespace与你的mapper接口路径比对一下,不同就改为mapper接口的路径。
原理:在mybatis中,映射文件中的namespace是用于绑定mapper接口的,即面向接口编程。 当你的namespace绑定接口后,你可以不用写接口实现类,mybatis会通过该绑定自动帮你找到对应需要执行的SQL语句。Spring在动态代理时,就是需要一个mapper接口的一个实现类,所以当你的mapper.xml与mapper接口类未关联到一块的时候,就会出现上述异常。


总结:
出现上边的类似异常,首先确定配置的资源路径(mapper接口扫描路径,mapper.xml资源路径)是否正确,然后就是排查mapper.xml文件中是否有错误。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/h363659487/article/details/74275972
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-02-24 22:19:03
  • 阅读 ( 1850 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢