You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot项目@Autowired注入Mapper失败找不到对应Bean如何解决

问题1:UserDao Bean未找到的解决方法
  • 优先在启动类UserSpringBootApplication上添加MyBatis的Mapper扫描注解,指定所有Mapper接口所在的包路径,示例代码如下:
@SpringBootApplication
@MapperScan({"com.ssm.dao", "com.ssm.mapper"})
public class UserSpringBootApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserSpringBootApplication.class, args);
    }
}
  • 检查UserDao、UserMapper上的@Mapper注解是否导入了正确的包:org.apache.ibatis.annotations.Mapper,避免导错包导致注解不生效。
  • 可以移除UserMapper上的@Mapper注解,该接口是MyBatis Generator生成的基础接口,仅作为父接口被UserDao继承,不需要单独注册为Bean,避免重复扫描冲突。
  • 若以上配置后仍提示注入失败,可以在UserDao上追加@Repository注解,主动声明该类为数据层Bean,配合@MapperScan一同生效。
问题2:application.properties配置错误说明

当前配置存在两处缺失:

  • 缺少Mapper XML文件的路径配置:你将UserMapper.xml、UserDao.xml放在resources/com/ssm/xml目录下,需要追加配置让MyBatis识别到XML文件,添加如下配置项:
mybatis.mapper-locations=classpath:com/ssm/xml/*.xml
  • MySQL连接URL缺少必要参数:高版本MySQL驱动需要指定时区,否则会抛出连接异常,建议修改url配置为:
spring.datasource.url=jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai

其余数据库、MyBatis核心配置文件路径配置无逻辑错误。

问题3:当前项目结构合理性评估

当前结构存在冗余问题,不合理之处如下:

  • 不需要额外新增dao层继承MyBatis Generator生成的mapper层:两层功能完全重叠,属于冗余设计。一般通用做法是直接将Generator生成的Mapper作为数据层接口,自定义SQL如果不想修改Generator生成的文件,可以单独新增XxxCustomMapper接口和对应的XML文件存放自定义SQL,不需要单独拆出dao层。
  • Mapper XML存放目录命名不规范:resources/com/ssm/xml建议改为resources/com/ssm/mapper,语义更清晰,也符合业内通用命名习惯。
  • 启动类位置、controller/service/model层的分层结构符合Spring Boot项目的规范,无问题。

内容的提问来源于stack exchange,提问作者Spaceship222

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 06:57:04