在测试代码注入的Service中,sqlSession获取不到,导致了Mapper.xml中的sql语句读取不到
拜托高手帮忙看一下。
如下图
这是mybatis的
这是spring的
这是接口和sql
应该是spring扫描不到mapper.xml的东西
java.lang.AssertionError: Mapped Statements collection does not contain value for com.hitachi.overall.db.mapper.UserGroupsMapper.findById
at org.junit.Assert.fail(Assert.java:92)
at com.hitachi.overall.service.UserGroupServiceImplTest.testFindById01(UserGroupServiceImplTest.java:108)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:44)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
-**--*-
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据你提供的错误信息,问题在于Spring在扫描时没有找到对应的Mapper配置文件,导致无法创建SQL映射的Mapped Statements。这里有几个可能的原因和解决方法:
确保mapper.xml文件路径正确:
resources/mappers
目录下(或其它指定的目录),并且这个目录需要被Spring正确配置以进行扫描。mybatis-config.xml
(如果有的话)或者Spring的配置类中是否正确指定了mapper的位置。Spring配置:
@Configuration
@MapperScan("com.hitachi.overall.db.mapper") // 确保这里的包路径与你的Mapper接口所在路径一致
public class MyBatisConfig {
// 其它配置...
}
<mybatis:scan base-package="com.hitachi.overall.db.mapper"/>
检查依赖:
资源文件加载:
resources
目录下)。命名和路径一致性:
.xml
扩展名),并且位于正确的包结构下。测试环境配置:
请按照上述建议检查并调整你的配置,这应该能帮助你解决问题。如果问题依旧,请提供更多的配置细节,以便更准确地定位问题所在。