背景:XML配置文件规范
使用Mybatis的注解方式,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句,也就是将SQL语句写在XML配置文件中。
在Mybatis中使用XML映射文件方式开发,需要符合一定的规范:
- XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名);
- XML映射文件的namespace属性为Mapper接口全限定名一致;
- XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致。
问题描述
使用SpringBoot集成MyBatis搭建项目并运行测试类的时候,出现了如下错误:
分析
看报错信息没有找到mapper的XML配置文件,于是检查了XML映射文件中的namespace属性是否与Mapper接口全限定名一致,XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致,反复检查了很久,没发现什么异常。
既然找的是类路径下的地址,那么去target中看看编译后的UserMapper.xml的位置
com.patrick.mapper是一个文件夹的名字,而不是
- com
- patrick
- mapper
- patrick
这样的树形结构,问题就在这里,当我在main的resources下创建存储EmpMapper.xml的文件夹时,直接新建了一个名为com.patrick.mapper的文件夹。
XML配置文件存放在resources目录下,文件夹是存储配置文件的基本单位。新建com.patrick.mapper的文件夹,编译器不会识别小数点,而仅仅是创建一个名为com.patrick.mapper的文件夹
解决方案
把resources目录下的名为“com.patrick.mapper”文件夹直接删掉,创建和接口一样的包名,New Directory的时候,切记包名之间使用/
分隔:com/patrick/mapper
运行测试类,执行结果如下,问题已解决: