spring与mybatis整合测试时报异常

java.lang.IllegalStateException: Failed to load ApplicationContext
   at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)
   at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83)
   at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:117)
   at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
   at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:228)
   at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:230)
   at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
   at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
   at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
   at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:249)
   at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89)
   at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
   at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
   at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
   at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
   at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
   at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
   at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
   at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
   at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:193)
   at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
   at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
   at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
   at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
   at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in URL [file:/C:/guodiantong2/ProjectFile/CodeGenerator/target/classes/spring-mybatis.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [org.springframework.core.io.Resource[]] for property 'mapperLocations'; nested exception is java.lang.IllegalArgumentException: Could not resolve resource location pattern [classpath:com/dzh/dao/mapper/*.xml]: class path resource [com/dzh/dao/mapper/] cannot be resolved to URL because it does not exist
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
   at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
   at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
   at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
   at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:753)
   at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
   at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
   at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:125)
   at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:60)
   at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:109)
   at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:261)
   at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98)
   at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116)
   ... 24 more

解决:修改spring-mybatis的jar版本。

 

 

### MyBatis 报错解决方案 #### SqlSessionFactory 或 SqlSessionTemplate 配置问题 当遇到 MyBatis 的 `SqlSessionFactory` 或 `SqlSessionTemplate` 相关的配置问题时,这通常是由于 Spring Boot 和 MyBatis 整合过程中的一些常见错误引起的[^1]。为了确保这些组件被正确初始化并正常工作,建议检查以下几个方面: - **依赖项版本兼容性**:确认项目中的所有库都保持最新状态,并且相互之间具有良好的兼容性。 - **数据源配置**:验证应用程序属性文件中定义的数据源设置是否准确无误。 对于此类问题的一个有效调试手段是在应用启动期间启用更详细的日志记录级别来获取更多关于 SQL 执行过程的信息。 #### Java 不支持的操作异常处理方案 如果遇到了由 `java.lang.UnsupportedOperationException` 导致的应用程序崩溃,则表明某些操作未得到适当的支持或实现。这种类型的错误往往发生在自定义扩展类未能重写父类抽象方法的情况下[^2]。针对这种情况可以采取如下措施: - 审查涉及该异常抛出位置的相关代码片段; - 如果是第三方框架引起的问题,请查阅官方文档寻找是否有已知缺陷以及对应修复补丁; - 尝试更新至更高版本以获得更好的稳定性和功能改进; 另外值得注意的是,在使用 MyBatis-Spring 进行持久层开发的过程中应当遵循最佳实践指南,比如合理运用事务管理机制等。 #### Mapper 文件映射失败分析 当收到类似于 "Invalid bound statement (not found)" 的提示信息时,意味着存在接口方法和 XML 映射文件间的不匹配情况。这类问题可能是由于路径设定不当或者是资源加载顺序不对所造成的[^3]。下面列举了几种常见的修正方式: - 确认所有的 mapper 接口都被标注了正确的包名前缀以便于扫描器识别; - 使用 `<mappers>` 标签显式指定要引入的具体 xml 路径; - 对于 spring boot 应用来说还可以通过 application.properties/yml 来简化此步骤: ```properties mybatis.mapper-locations=classpath*:mapper/**/*.xml ``` 最后提醒开发者们务必仔细阅读每次构建后的控制台输出内容,因为其中包含了大量有助于定位故障根源的有效线索。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值