invalid bound statement 记一次springboot项目重构 访问数据库导致报错

因项目逐渐扩大,需要将服务拆分成多个服务,数据传输层对象携带了些许业务,导致拆分模块无法拆分干净每个模块中可能都存在*mapper.xml文件。

解决方案:

原先配置文件中的mapperLocations = classpath:mapper/**/*Mapper.xml

后面改成mapperLocations = classpath*:mapper/**/*Mapper.xml

注意:这里的classpath后面带了一个*号

其实导致invalid bound statement的根本原因就是 classpath,classpath*加载文件时出现了问题

1、classpath:表示从类路径中加载资源,classpath:和classpath:/是等价,都是相当于类的根路径

2、classpath*:表示会扫描所有的类路径下出现的同名文件,会遍历所有的classpath,加载速度会相对较慢。(因为拆分的时候几乎每个项目都存在这个文件。导致访问部分的mapper.xml会出现 invalid bound statement )

其他可能会出现invalid bound statement 的原因和解决方法:

1、xml 里面的namespace 不对 或者id和mapper里面的方法名不一样,

2、xml的文件名和mapper.java的文件名需要一致

3、配置文件设置的路径和resources下的文件路径不同导致

4、编译问题查看target\class\下是否有这些.xml文件

5、先maven clean 后重新编译。

6、配置错误,扫描报的时候看下mapperScan的路径和自己的文件路径是否相符

7、随意在xml文件中加一个空格或者空行然后保存

8、如果在idea开发的时候打包*Mapper.xml没有自动复制到class输出目录的mapper类报下,需要在pom文件中添加mybatis加载配置文件

<build>
  <resources>
    <resource>
        <directory>src/main/java</directory>
      <includes>
        <include>mapper/**/*Mapper.xml</include>
      </includes>
    </resource>
    <resource>
      <directory>src/main/resources</directory>
    </resource>
  </resources>
</build>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值