(已解决)确定mapper配置无误,且配置文件无误, 运行无误 出现org.apache.ibatis.binding.BindingException: Invalid bound statemen

(已解决)确定mapper配置无误,且配置文件无误, 运行无误 出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 解决方案 – 常见于多模块服务部署下(适用于一个Tomcat实例部署情况)

如果着急修改错误 直接看代码部分哦


故事回放

今天又是老司机翻车的一天: 最近在做一个基于Maven多模块项目, 依仗着自己多年横趟单模块实现SSM的经历, 觉得多模块仅仅就是1 + 1 = 2的问题, 哪层料想, 这样天真的想法被现实一顿毒打

拿着以往的配置, 在maven的各个模块一顿CV操作, 是真的香; 只可恨maven看不惯你这么舒服 非要搞你心态:

好不容易做完一个业务逻辑,准备启动部署测试, 整个过程一气呵成, 没有任何错误 非常顺利, 这个顺利甚至让我以为自己已经是大佬了吗(居然可以一次性部署成功)

打开postMan兴高采烈在url上一顿准备测试, 心中早已预判了点下send按钮的出现喜悦画面已经想好如何吹逼自己牛b的时候. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)当头棒喝 (蓝瘦香菇)

本能地以为就是自己那里CV操作有误(还沉浸在自己一统单模块部署ssm的世界里, 无法自拔) 1个钟头过去了,没有任何进展 于是乎打算一一对比配置文件 甚至还一一对应mapper文件,就这样 2个钟头过去了仍然解决不了, 心态开始崩了 终于放下最后的倔强(我是大佬, 我可以自己解决的) 求助度娘

结果都在说要么是配置文件写错了, 要么包导入错了 要么mapper文件(初学者必踩)写错了 总之搜了一圈大同小异, 没有实质进展

后来我开始转而去找其他人做的多模块项目 对比Maven配置文件(也许是出于经验, 我本能的想到多模块下maven的特殊性可能会出现一些问题) 终于在一个大佬的配置中发现了 一个不起眼的参数配置

 <filtering>true</filtering>

为了便于理解我贴出它的精确位置

 <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
     			
                <filtering>true</filtering>
    </resource>

起初我没太在意这个东西, 因为自己曾经也用过maven部署web项目 没有加入过这个配置 也能访问 所以没怎么care, 后来实在是没辙了 就死马当活马医,

结果是加入后瞬间起飞 : 一方面感动自己 一方面懵逼良久


究其原因

首先这个参数的含义是: 启动配置文件中的**${}**过滤 比如我们在配置文件常常定义一些参数 最常见就是db.properties的驱动参数

你在spring的配置文件中使用时是不是采用**${}**进行访问 它的作用就是开启这个符号的识别(默认是关闭的)

那为啥以前不用配置 也能正常访问?

以下内容为笔者推断不具备真实性, 请慎重考虑

  • 我首先想到以前我们处理的项目就只有一个web模块 也就是说所有有关的配置文件都在一起, 那么maven完全可以基于单模块自动识别 同一个resource下的资源

  • 而多模块下, 我们有好几个web模块也就是说会有多个resource目录 那maven就无法判断了(详见注解)如果你用${}去访问资源 那么到底访问那一个资源呢(比如同时依赖db.properties进行数据库的访问) 所以maven在开启了pom.xml的一个参数配置filting 如果显示指定为true那么肯定是访问当前模块的资源目录

    注意:这里无法判断是指 在同一个Tomcat环境下 部署多个war 或者说多模块启动都是基于一个Tomcat实例 如果你是把多模块部署分别在不同的tomcat里那么 本文自动失效

    以上就是笔者的大胆推论, 至于验证就留待以后解决,如果各位童鞋有确定的想法可以在评论留言哦!


彩蛋

有没有童鞋还不会配置tomcat同时部署多个war或者虽然你部署了多个但是只能启动一个呐?

原因很简单: 看截图哦

在这里插入图片描述

在这里插入图片描述

看懂了吗 现在可以启动了 进行的玩耍你的多模块项目吧!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值