栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

解决多Springboot多个module时service层调用数据访问层时出现扫描不到mapper,出现Invalid bound statement (not found)问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

解决多Springboot多个module时service层调用数据访问层时出现扫描不到mapper,出现Invalid bound statement (not found)问题

解决多Springboot多个module时service层调用数据访问层时扫描不到mapper,出现Invalid bound statement (not found)问题

         最近在学习springboot,不得不说spring组件一站式解决方案太强大了,不仅简化了使用 Spring 的难度,还简省了繁重xml的配置,提供了各种启动器,能在运行过程中自定配置,大大减少了工程开发的时间,原本创建工程时需要繁琐的配置,而springboot只需要配置几个依赖就可以搞定,使得开发者能够快速速上手。

不啰嗦了,下面来看我遇到的问题


问题描述:

之前我们在搭建SpringMvc项目的时候,我们通常会把层次全部创建在一个工程里,然后再这个工程里创建不同的包来存放这些分层里(如controller、service、dao、pojo),当然springboot也可这么实现例如下图
这种结构如果是出现org.apache. ibatis.binding. BindingException Create breakpoint : Invalid bound statement (not found):这个问题大多数有一下几种情况

  1. 配置文件中mapper文件配置的包路径不正确
  2. mapper文件中的namespace与对应mapper接口的路径不一致
  3. 所调用dao层的方法与对应mapper文件中不一致
  4. 方法返回值是List<>,而select元素没有正确配置ResultMap,或者只配置ResultType
  5. 编译错误,targetclasses中不存在mapper对应的xml文件

我创建工程的时候创建了多个model,由父工程,管理子模块子模块之间的依赖如下图
创建过程很顺利,途中没有遇到什么以外,各个module之间调用没有问题,于是我开始写数据库操作,为了方便测试只写了一个简单的查询,测试的时候就出现异常了一直报

org.apache. ibatis.binding. BindingException: Invalid bound statement (not found):
于是我按照上面提到的几点一一排查,发现没有问题,为什么不好使,是什么问题导致的呢?百思不得其解,于是我开始了各种百度,大多数帖子都是说上面提到的几种情况,也有说在mapper接口上面加上@Mapper注解,或者在启动类里加上@MapperScan这个注解等等......按照帖子上的答案一一去实验,都没有解决问题!就这个问题我耗了整整一天,也没整出个一二三来,头发都被自己揪掉了大把!到底是哪儿出现了问题了呢? 最后实在没辙了在技术群里问了这个问题,然后一个老哥发现了问题所在,原因竟然是我把数据库的配置写到了dao层里的application.properties配置文件里了,然后导致的这个问题,把数据库配置移到启动类所在的module里面就解决了!就解决了?我的天...这就是折磨我一天的答案....
原因分析:

后来通过和那位群友的探讨,它是根据各种不同类型的数据源,然后进行自动配置,自动配置前缀就是spring.datasource,默认找的是启动类所属模块的application.properties,而我数据源写到了dao这个module里的application.properties配置文件中了

解决方案:

把application.properties配置文件写在启动类所属模块中

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/298511.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号