01

问题描述

今天在写mybatis和spring整合的时候,出现了个问题,其实也没有多难,就是自己没有仔细看,特此记录一下。

报错问题如下:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'empService' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'org.mybatis.spring.mapper.MapperScannerConfigurer' to required type 'org.dao.EmpDaoMapper' for property 'empDao'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [org.mybatis.spring.mapper.MapperScannerConfigurer] to required type [org.dao.EmpDaoMapper] for property 'empDao': no matching editors or conversion strategy foundat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:529)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191)at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:636)at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:934)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)at org.test.TestMain.before(TestMain.java:21)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)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.RunBefores.evaluate(RunBefores.java:27)at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)at org.junit.runners.ParentRunner.run(ParentRunner.java:236)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:467)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'org.mybatis.spring.mapper.MapperScannerConfigurer' to required type 'org.dao.EmpDaoMapper' for property 'empDao'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [org.mybatis.spring.mapper.MapperScannerConfigurer] to required type [org.dao.EmpDaoMapper] for property 'empDao': no matching editors or conversion strategy foundat org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:464)at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:495)at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:489)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1465)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1424)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1160)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)... 34 more
Caused by: java.lang.IllegalStateException: Cannot convert value of type [org.mybatis.spring.mapper.MapperScannerConfigurer] to required type [org.dao.EmpDaoMapper] for property 'empDao': no matching editors or conversion strategy foundat org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:267)at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:449)... 40 more

下面是spring的所有配置文件信息:

配置数据源信息:

<!-- 配置数据源 --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"></property><property name="url" value="jdbc:mysql://localhost:3306/schooldb"></property><property name="username" value="root"></property><property name="password" value="root"></property></bean>

配置SqlSessionFactory信息,以及加载数据源:

<!-- 加载数据源 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><!-- 配置mapper属性 --><property name="mapperLocations"><list><value>classpath:org/dao/*/*.xml</value></list></property><!-- 配置mybatis配置文件 --><property name="configLocation" value="classpath:mybatis-config.xml"></property></bean>

使用MapperScannerConfigurer注入映射器:

<!-- 使用MapperScannerConfigurer --><bean id="empDao" class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="org.dao"></property></bean>

下面就是配置Service层:

<bean id="empService" class="org.service.impl.EmpServiceImpl"><property name="empDao" ref="empDao"></property></bean>

问题就出在“配置Service层”这一步,原来在未使用MapperScannerConfigurer的时候,程序是可以正常跑起来的,但是加上MapperScannerConfigurer,程序就报错,找了好半天,终于发现,原来粗心的将对象名写错了,下面是问题的解决方式:

02

解决问题

更正MapperScannerConfigurer注入映射器和empService注入映射器,代码如下:

<!-- 使用MapperScannerConfigurer --><bean  class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="org.dao"></property></bean><bean id="empService" class="org.service.impl.EmpServiceImpl"><property name="empDao" ref="empDaoMapper"></property></bean>

然后运行项目,正常执行:

03

分析问题

当我们使用MapperScannerConfigurer注入映射器时,可以不用Mapper的实现类,但是Mapper的接口名必须要与所对应的SQL映射文件名一模一样,且接口中的方法名需与SQL映射文件的id名相同。

通过MapperScannerConfigurer可以批量生成映射器实现,映射器被注册到Spring的容器时,spring会自动根据其接口名给其命名,默认规则是首字母小写的非完全限定名。比如上面代码中的接口名为EmpDaoMapper,那默认命名就是empDaoMapper,原来在ref引入对象的时候,写的是empDao,所以就报错。改成其默认的命名empDaoMapper问题解决。

希望大家在整合框架的时候,能认真细心,避免出现没必要的bug,耽误时间。

辣椒酱,了解下呗~

往期精彩

考研生的努力程度是有多恐怖!

2020-12-27

越优秀的人越努力,越努力的人越幸运!

2020-12-26

“老师,为什么我一上课就感到困,听课听的总是走神?”

2020-12-25

最好的方法,是为你们量身定制!

2020-12-23

“桌面日历”记录的事件居然是看某某视频……

2020-12-21

点分享

点点赞

点在看

mybatis和spring整合时这个报错,应该这样解决!相关推荐

  1. 在配置spring配置文件时各种报错,解决办法

    好久没在这上面记东西了,把以前遇到的问题整理一下贴出来,希望给同样遇到问题的朋友们一点帮助 1.配置sping配置文件时,一直报错,原来是在头部没有声明context前缀: 2.进行配置时,产生如下错 ...

  2. spring boot整合SpringSecurity-03 自定义报错信息

    spring boot整合SpringSecurity 目录 spring boot整合SpringSecurity-01入门 spring boot整合SpringSecurity-02 基于Ser ...

  3. 解决高版本SpringBoot整合swagger时启动报错:Failed to start bean ‘documentationPluginsBootstrapper‘ 问题

    一.控制台的报错信息 2021-12-29 15:15:04 [main] ERROR org.springframework.boot.SpringApplication - Application ...

  4. Springboot 集成 Activiti时启动报错!'org.activiti.spring.boot.SecurityAutoConfiguration

    Springboot 集成 Activiti时启动报错! org.springframework.beans.factory.BeanCreationException: Error creating ...

  5. Spring+SpringMVC+MyBatis深入学习及搭建(九)——MyBatis和Spring整合

    1.整合思路 需要Spring通过单例方式管理SqlSessionFactory. Spring和MyBatis整合生成代理对象,使用SqlSessionFactory创建SqlSession.(Sp ...

  6. Mybatis 与Spring整合及原理

    Mybatis 与Spring原理分析 http://www.mybatis.org/spring/zh/index.html 这里我们以传统的Spring 为例,因为配置更直观,在Spring 中使 ...

  7. 【Qt】Qt发布程序时,报错: could not find or load the Qt platform plugin xcb

    问题描述 Qt程序在发布时,报错: This application failed to start because it could not find or load the Qt platform ...

  8. zabbix 安装时的报错mysql_connect(): Access denied for us

    zabbix在安装完成时的报错 出现提示:mysql_connect(): Access denied for user 'zabbix'@'localhost' (using password: Y ...

  9. 解决pip安装时出现报错TypeError: unsupported operand type(s) for -=: ‘Retry‘ and ‘int‘

    我在Linux下使用pip安装时出现报错: Exception: Traceback (most recent call last):File "/usr/lib/python2.7/dis ...

最新文章

  1. HDFS 文件格式——SequenceFile RCFile
  2. 远程调用RestTemplate
  3. 开发者成功使用机器学习的十大诀窍
  4. maven添加非官方jar包到本地库
  5. Dll入口函数参数详解
  6. Allegro 光绘文件快速导入
  7. 什么是SAP OData Model Creator
  8. Codeforces Round #666 (Div. 2)
  9. 中台唯一的胜利果实:大数据中台架构详解
  10. 关于Zookeeper来实现分布式锁的几个问题
  11. ubuntu packege下载网址
  12. 虚拟现实果真来了吗?
  13. 预知昨天事情不顺,果然碰到两个
  14. python绘制彩色地震剖面断层解释_断层在地震剖面上的反映及解释
  15. 一文搞懂大比例尺地形图测绘
  16. 2021:不要在一件事上纠缠太久!
  17. php公众号菜单链接,微信公众号菜单栏添加外部链接
  18. 基于Android10的忽略HTTPS证书校验
  19. 转:Windows XP系统中如何屏蔽 Ctrl+Alt+Del、Alt+Tab以及Ctrl+Esc键序列
  20. 一图看懂信用报告在线查询指南

热门文章

  1. dotcpp1115 DNA-打印图案
  2. C++string容器-字符串查找和替换
  3. 牛客练习赛69 解方程
  4. #6278. 数列分块 2 分块 + 块内二分
  5. Codeforces Round #597 (Div. 2) D. Shichikuji and Power Grid 最小生成树 + 虚拟点
  6. 【WC2014】时空穿梭【组合数】【莫比乌斯反演】【整除分块】【暴力多项式】
  7. P2605 [ZJOI2010]基站选址
  8. Acwing 1084. 数字游戏 II
  9. 蓝桥杯国赛 皮亚诺曲线距离
  10. 牛客网 【每日一题】5月13日 加分二叉树