Swis_BMQ 2022-12-14 11:54 采纳率: 54.5%
浏览 74

springboot中使用tkMapper注册不了mapper,报错Failed to load ApplicationContext

springboot中使用tkMapper扫描不到mapper,报错java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@6535117e testClass =xxx

本人很菜,也是第一次用tkmapper,一步一步跟着教程来
查了很多,网上说要注意的点也注意力
首先BaseMapper(通用)没有与其他mapper放在同一个包下
xmlmapper放在resources的mappers下
在springboot启动类上添加包扫描,确实是使用了tk包下的MapperScan

import tk.mybatis.spring.annotation.MapperScan;
@MapperScan(basePackages = "com.hong.trainingevaluator.mapper")

pom.xml依赖如下,mybatis使用的是

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>

tkmapper相关

        
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper</artifactId>
            <version>4.1.5</version>
        </dependency>
        
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.0.3</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-jdbc</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

application.yml

mybatis:
  # 开启驼峰命名
  configuration:
    mapUnderscoreToCamelCase: true
    mapperLocations: classpath:mapppers/*.xml
    typeAliasesPackage: com.hong.trainingevaluator.entity
  mapper-locations: classpath:mappers/*.xml
mapper:
  mappers: com.hong.trainingevaluator.mappers
  identity: MYSQL

这是我的目录结构

img

报错截取

java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@6535117e testClass = com.hong.trainingevaluator.MapperTest, locations = [], classes = [com.hong.trainingevaluator.TrainingEvaluatorApplication], contextInitiali...
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clazzMapper' defined in file [D:\Java\IDEA2021\project\training-evaluator\target\classes\com\hong\trainingevaluator\mapper\ClazzMapper.class]: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
....    

img

关键是在这一步就开始报错了,mapper没有注册成功,如果改用@mapper 注解的话,那就跟普通的MapperScan 没有区别了
我这里没有用@Mapper ,在启动类添加tk包下的包扫描@MapperrScan
在测试类中,使用@Autowired 报错,说找不到,只能用@Resource
运行后直接报错,测试类的第一条语句都无法执行
所以就非常郁闷

img

欢迎大家讨论解答,万分感谢

  • 写回答

2条回答 默认 最新

  • miukoo 2022-12-14 12:51
    关注
    评论

报告相同问题?

问题事件

  • 创建了问题 12月14日