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路径会是你配置的sqlMapGenerator targetPackage="mybatis.mapper"的路径,然后上边的异常就在你使用mapper接口时出现了。


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


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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气的梧桐述

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值