网站群集建设,网架公司地址,wordpress html5中文主题,饰品公司网站建设方案一、前言
本文的mybatis是与springboot整合时出现的异常#xff0c;若使用的不是基于springboot#xff0c;解决思路也大体一样的。
二、从整合mybatis的三个步骤排查问题
但在这之前#xff0c;我们先要知道整合mybatis的三个重要的工作#xff0c;如此才能排查#x…一、前言
本文的mybatis是与springboot整合时出现的异常若使用的不是基于springboot解决思路也大体一样的。
二、从整合mybatis的三个步骤排查问题
但在这之前我们先要知道整合mybatis的三个重要的工作如此才能排查且往下看。
2.1 pom.xml配置**Mapper.xml文件的构建路径
我们打开pom文件如下 buildresourcesresourcedirectorysrc/main/java/directoryfilteringfalse/filteringincludesinclude**/*.xml/include/includes/resourceresourcedirectorysrc/main/resources/directoryfilteringfalse/filteringincludesinclude*/includeinclude**/*.xml/include/includes/resource/resources/build这部分代码的作用是指定需要编译到taget目录下的资源文件。我们的程序运行都是执行编译好的taget目录下的内容若taget里找不到xml文件资源就会报错Invalid bound statement (not found)。
每个人的项目配置都可能有些区别但在这里我们只需要关注includes标签即可。还有对于不同的项目xml的存放位置也可能不同有的存在于src/main/java代码下有的存在于src/main/resources。 include**/*.xml/include 这行代码是用于构建存在于src/main/java代码中的xml文件。 include/include include**/.xml/include 这行代码是用于构建存在于src/main/resources代码中的所有文件。 上述我们可以排查第一个可能抛出Invalid bound statement (not found)异常的情况我们可以通过查看编译好的taget目录如下
情况一
原代码文件目录
编译失败的情况
编译成功的情况 情况二 源代码文件目录
编译失败
编译成功
有时一直编译不成功那就将taget重新删除再编译。
2.2 配置mapper类的包扫描路径
这个步骤与Invalid bound statement (not found)异常无关但是它也是整合mybatis重要的步骤之一这里也说明一下有两种方式实现可根据自己的项目情况使用。两者择其一
通过注解的方式扫描
通过配置类方式扫描
这个步骤的目的是将我们定义的mapper类装配到我们的ioc容器中。
若没有扫描启动时就会直接报找不到mapper的错误无法运行项目。
2.3 application.yml文件中配置**Mapper.xml文件的扫描路径
值得一说的是这一步骤的扫描是建立在步骤一的基础之上的若编译好的taget目录都没有目标文件那这一步骤就更不用说了。
一
这里的扫描路径配置还需要注意自己的项目使用的原始mybatis还是mybatis-plus它们的配置也有区别的如下
原始mybatis
mybatis:mapper-locations: classpath:/cn/anycase/demo/mapper/xml/*Mapper.xmlmybatis-plus:
mybatis-plus:mapper-locations: classpath:cn/anycase/demo/mapper/xml/*.xml本例用的是mybatis-plus
二 使用mybatis-plus有时可以省略这个扫描路径的配置所以我们看到的有些项目少了这个配置但它并没有错且能正常运行。(原始mybatis是否也可以本人未做相关测试有知道的评论区可以说一声)
三 还有一个需要注意的点前面步骤一说了mapper.xml文件可能存在于src/main/java代码中或存在于src/main/resources资源中因此我们的配置路径也有所不同如下
Invalid bound statement (not found)这个异常在常规下通过上述的三个步骤可以百分百解决。但我们都知道工作中出总会出现各种奇葩异常。下面介绍且往下看。
未完待续…晚点补充太累了。
三、非常规的Invalid bound statement (not found)异常
3.1 文件名导致的异常
3.2 使用了自定义SqlSessionFactory导致的异常