使用TKMapper报错'无法获取实体类xxx对应的表名!'

使用TKMapper报错’无法获取实体类xxx对应的表名!’

项目版本:
Spring boot 1.5.9
mybatis-spring-boot-starter 1.3.0
tk.mybatis 1.1.4
由于想使用TkMapper新特性,Example.builder这种流形式的,升级了tk.mapbatis版本到1.2.4,pom依赖如下:

    <properties>
        <mybatis.tk.version>1.2.4</mybatis.tk.version>
    </properties>
    <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>${mybatis.tk.version}</version>
        </dependency>

然后随便找了个测试类测试下,如UserMapper,执行报错‘无法获取实体类User对应的表名’。检查User类,UserMapper,userMapper.xml,配置都正确。
查看TkMapper源码,发现未初始化EntityHelper类的如下代码

   public static synchronized void initEntityNameMap(Class<?> entityClass, Config config) {
        if (entityTableMap.get(entityClass) != null) {
            return;
        }
        //创建并缓存EntityTable
        EntityTable entityTable = resolve.resolveEntity(entityClass, config);
        entityTableMap.put(entityClass, entityTable);
    }

去官网看文档说明,作者写道如果启动类用@MapperScan注解,则需要使用tkmpper提供的,而不要用Spring的。
我的项目正好是在启动类中使用了@MapperScan,换成tkmapper,再启动测试类,一切OK!

猜你喜欢

转载自blog.csdn.net/liubingyu12345/article/details/79957698