springboot2.x整个tkMapper @MapperScan扫描失效

前言

错误场景开始是这样子的:
controller调用service,service实现类,三种写法:

  • @Service,这种是默认首字母小写的方式。控制台提示找不到所调用的方法
  • @Service(“testService”) 这种,就是把接口首字母小写。和上面其实一样。但是控制台提示,有相同名称的bean已存在
  • @Service(“abc”) 这种,就是把bean的名称改为其他。可以调用成功。
    周末遇到的这个问题。周一上午在群里稍微问了下,都没有人能解答。最多是检查一些配置。
    晚上回来,各种百度,各种改配置。最后,还是用的以前用的方法:排除法。
    1.首先,代码都已经提交过了。然后,把java代码全部删掉,结果还是保tkMapper的错。
    2.然后把其他子工程的pom依赖复制过来,测试运行,成功。那么就是依赖问题。
    3.这时候,把代码恢复。测试一下普通的接口,可以用。但是要解决的问题是为什么使用tkMapper会报错。
    4.代码一点一点慢慢加,测试。最好就发现了文章标题的这个错误。mapper没有实例化。首先,启动类的确扫描到了,但是还是无法实例化,最好就试了下在mapper上面加@Mapper注解。这样是可以的。
/**
* 创建时间: 2019/11/23 ,文件由 Mybatis Generator 生成
*/
@Mapper
public interface BaseUserInfoMapper extends tk.mybatis.mapper.common.Mapper<BaseUserInfo> {
     

}

然后继续百度。

解决办法

试了又试,最好看控制台错误信息里面,提到mybatis,yml配置文件里,又配置了mybatis。前面试的时候,有把集成mybatis的jar添加到项目里,但是当时好像没成功! 或者是当时除了jar,还有yml错误。
结果:

  1. 依赖需要添加mybatis的jar。这两个都需要,缺一不可
<dependency>
   <groupId>org.mybatisgroupId>
    <artifactId>mybatisartifactId>
    <version>3.4.6version>
dependency>
<dependency>
    <groupId>org.mybatisgroupId>
    <artifactId>mybatis-springartifactId>
    <version>1.3.2version>
dependency>
  1. yml配置,两种都一样,都可以。重点是:mappers所扫描的包,对应的是自己的dao层。这个地方,可能每个版本配置的不一样?我上次大框架,这个地方配的是tk.mybatis.mapper.common.Mapper,就没报错。
    第一种:
mybatis:
  type-aliases-package: com.core.server.entity
  dao-locations: classpath:dao/*.xml
  configuration:
    ##开启驼峰
    map-underscore-to-camel-case: true
  ##扫描基类接口
  mappers: com.core.server.dao
  identity: MYSQL
  not-empty: false

第二种:

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

结语

springboot2.1.9整合tkMapper。不是第一次整合了。上一次整合,就没出现这个问题,有点坑。
2019年11月25日21:47:45 完成!

你可能感兴趣的:(后端问题,springboot,+,tkMapper,MapperSpan失效,MapperSpan注解失效)