mybatis回顾兼顾分析Invalid bound statement (not found)的问题

文章目录

项目中需要使用mybatis原生,之前都是使用mybatis plus或者mybatis pagehelper,突然使用偏原生,主要是xml中的简单增删改查都需要手动机械的实现真的是相当死板,搜索一下发型mybatisx这个插件非常好用,没有考虑mybatis pro那个插件插件使用介绍在下面,之前很多mybatis代码生成需要mybatis maven插件配置一堆真的是非常不友好,使用这个插件只需要利用idea连接对应插件即可使用,配置下后生成对应的xml和mapper代码和domain/entity对象,简直是神器.

mybatis—mybatis插件根据接口自动生成xml文件_mybatis xml 生成插件_任何时候都要勇敢的博客-CSDN博客

后面依照这个配置一步一步走下去没什么问题

按照步骤: https://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/zh/index.html

Spring Boot 整合 MyBatis | Java进阶之路

SpringBoot整合mybatis

]

但是后面一直出现Invalid bound statement (not found)

想着这种一定是我配置出错,网上搜索都是

  1. mapperscan的配置

  2. mybatis.config-location=classpath*:**/mapper/*Mapper.xml

  3. xml下的namespace要写正确

认真对了几遍以为是自己没按照模板来,但是mybatisx这个插件都能正常解析,真的是头大,确认再三一定是mybatis加载对应statement的时候没加载到在看到这篇文章后我大概确定了

MapperAnnotationBuilder 下parse 中有loadXmlResource()

在这里寻找mapper接口对应的xml的资源路径的方式如下:     

1
String xmlResource = type.getName().replace('.', '/') + ".xml";

  替换接口包名中的.为/ 并在接口添加.xml后缀。
  比如:Mapper接口com.hbfec.encrypt.admin.dao.ocr.TestDao的对应的xml资源路径会解析为com/hbfec/encrypt/admin/dao/ocr/TestDao.xml。
  TestDao.xml在我的项目中的路径是classpath:dao/ocr/TestDao.xml,路径与上面解析出来的不一致,mybatis无法找到TestDao.xml,导致以上错误。所以项目采用使用这种方式绑定Mapper接口和Mapper.xml的话,其路径和名称都要一致

所以我项目下resource下面需要有对应的路径,由于太久没写都是直接写mapper导致解析不到

参考spring boot mybatis 报错Invalid bound statement (not found)解决过程 - 全me村的希望 - 博客园