Spring Boot整合MyBatis XML启动报Unsatisfied dependency错误如何解决
问题根因
报错已经明确给出冲突点:
java.lang.IllegalStateException: Property 'configuration' and 'configLocation' can not specified with together
该错误表示你同时配置了MyBatis独立配置文件路径(mybatis.config-location)和Spring Boot配置文件中的MyBatis参数(mybatis.configuration.*),二者互斥无法同时生效。
调整步骤
- 第一步:解决配置冲突
推荐使用Spring Boot自动配置方案简化配置:- 直接删除resources下的
mybatisConfig.xml文件,不需要独立的MyBatis配置文件 - 删除
application.properties中的mybatis.config-location=classpath:mapper/mybatisConfig.xml这一行配置
- 直接删除resources下的
- 第二步:修正Mapper XML的命名空间绑定
打开EmployeeMapper.xml,将mapper标签的namespace属性修改为你Mapper接口的全限定名:
原配置的<mapper namespace="com.tmb.mybatiscrudproj.mapper.EmployeeMapper">namespace="Employee"无法和对应的Mapper接口绑定,会导致接口方法无法匹配XML中的SQL语句。 - 第三步:检查Mapper XML存放路径
你的application.properties中配置了mybatis.mapper-locations=classpath:mapper/*Mapper.xml,请确保EmployeeMapper.xml放在resources目录下的mapper文件夹中。如果XML直接放在resources根目录,就将配置修改为mybatis.mapper-locations=classpath:*Mapper.xml。 - 第四步:清理冗余注解
启动类上的@MappedTypes({Employee.class})属于冗余配置,你已经配置了mybatis.type-aliases-package=com.tmb.mybatiscrudproj.domains自动扫描实体类别名,可直接删除该注解。
验证
修改完成后重新启动项目,启动成功后即可正常访问接口:
- 查询所有员工:GET请求
http://localhost:8081/employee/getAllEmp - 按ID查询员工:GET请求
http://localhost:8081/employee/getEmp/{员工ID}
内容的提问来源于stack exchange,提问作者Chaudhry Talha
相关产品推荐
相关产品推荐

