在测试代码注入的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)
-**--*-
工资好高吧!######看一下你的mybatis配置以及启动log######关于配置以及sql的文件都传上去了,拜托######日企外包的注释写的真好,自叹不如啊######说重点啊。。。 看代码,就那点东西,不知道为什么获取不到。。。######
我自己写的mock有这个类
@ContextConfiguration(locations = { "classpath:conf/appContext-dao-test.xml" }) @TransactionConfiguration(defaultRollback = true) public abstract class AbstractRepositryTest extends AbstractTransactionalTestNGSpringContextTests { }
我自己写的mock有这个类
@ContextConfiguration(locations = { "classpath:conf/appContext-dao-test.xml" }) @TransactionConfiguration(defaultRollback = true) public abstract class AbstractRepositryTest extends AbstractTransactionalTestNGSpringContextTests { }
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
没有配置mapperLocations这个属性:告诉mybatis去哪里扫描映射文件
######回复 @JacarriChan : 非常感谢,这个问题扔给日本人解决去了,没时间再耽误在这个问题上了######把日志级别改成trace,然后把所有日志发给我.######真的很困惑啊######<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
没有配置mapperLocations这个属性:告诉mybatis去哪里扫描映射文件
非常感谢您的回答,但是关于这个属性我也尝试过了
如下:
<!-- MyBatisのSqlSeessionFactoryの定義 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"></bean>
但是同样没有扫描到
另外关于mybatis.xml的mapers配置,我也查了资料说这里不需要配置
<!--说明:如果xxMapper.xml配置文件放在和xxMapper.java统一目录下,mappers也可以省略,因为org.mybatis.spring.mapper.MapperFactoryBean默认会去查找与xxMapper.java相同目录和名称的xxMapper.xml-->
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。