包路径扫描引起的 MyBatis 异常 BindingException
博客专区 > j4love 的博客 > 博客详情
包路径扫描引起的 MyBatis 异常 BindingException
j4love 发表于1年前
包路径扫描引起的 MyBatis 异常 BindingException
  • 发表于 1年前
  • 阅读 47
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

异常信息

    org.apache.ibatis.binding.BindingException:Invalid bound statement (not found): net.mytaotao.usermanager.core.user.service.UserService.getUserById

发现原因

    这里的 userService 成了 mybatis 针对 Mapper 产生的代理对象了 。 mapperInterface 是 net.mytaotao.usermanager.core.user.service.UserService 接口,并不是某个 Mapper 接口,所以产生 org.apache.ibatis.binding.BindingException 异常。

    导致以上现象的原因

    

    

    

说明 : basePackage 属性支持 Ant 风格的通配符

(这个问题的原因应该和 mybatis 的扫描和加载策略有关,具体源代码我还没看,只是猜测。)

解决问题

    由于我的 basePackage 配置的问题 MapperScannerConfigurer 扫描到了 service 包下的接口,但这是错误的,并不是我们希望的。所以修改 basePackage 的配置为 

    

    

说明 : basePackage 属性支持 Ant 风格的通配符

Ant通配符

  • ? 匹配任何单字符
  • * 匹配0或者任意数量的字符
  • ** 匹配0或者更多的目录

举例

  • /project/*.a 匹配项目根路径下所有在project路径下的.a文件
  • /project/p?ttern 匹配项目根路径下 /project/pattern 和 /app/pXttern,但是不包括/app/pttern
  • /**/example 匹配项目根路径下 /project/example, /project/foow/example, 和 /example
  • /project/**/dir/file.* 匹配项目根路径下/project/dir/file.jsp, /project/foow/dir/file.html
  • /**/*.jsp 匹配项目根路径下任何的.jsp 文件

 

测试

    

    这时 UserService 中已经注入了 UserMapper ,而 mapperInterface 也是正确的 UserMapper 接口了。

共有 人打赏支持
粉丝 6
博文 36
码字总数 23618
×
j4love
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: