环境情况

再用SpringBoot3整合Mybatis时,出现报错。已完成的配置如下

  1. 添加依赖如下
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.3</version>
            </dependency>
  1. Mapper层已添加@Mapper注解
  2. 主程序以正确添加注解@MapperScan("xxx.xxx.mapper")扫描Mapper文件夹
  3. 配置文件已配置
mybatis.mapper-locations=classpath:/mapper/*.xml
  1. 映射文件命名空间、方法等已和对应mapper配对

报错信息:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘memberController’: Unsatisfied dependency expressed through field ‘memberService’: Error creating bean with name ‘memberService’: Unsatisfied dependency expressed through field ‘memberMapper’: Error creating bean with name ‘memberMapper’ defined in file [D:\SpringBoot_train\member\target\classes\com\mystudy\train\member\mapper\MemberMapper.class]: Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required

主要还是说没找到mapper,没定义。但我已经完整按照要求写了所有东西…网上有解决方案说要把启动项放在mapper目录同级,这个我也尝试过,但没用,只要配置了扫描,不同级也行。

解决

最后发现是版本对应问题。。。把mybatis依赖的版本改成3.0.0,如下

            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
<!--                <version>2.1.3</version>-->
                <version>3.0.0</version>
            </dependency>

当然,上面我所提到的5点配置,也需要完成。最后改了版本号,刷新一下依赖,其他什么也没动,就不再报错。

总结

版本问题真是很令人无奈啊,可能SpringBoot3之后,2.x.x版本的Mybatis还没有很好的适配,因此更新到3.0.0之后就解决问题了。特此记录。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐