2.2K Star 11.1K Fork 3.4K

GVPbaomidou / mybatis-plus

 / 详情

动态表名 SQL 解析器不调用重写的dynamicTableName()方法

已完成
创建于  
2020-02-23 18:31

当前使用版本(必须填写清楚,否则不予处理)

<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-boot-starter</artifactId>
   <version>3.3.1</version>
</dependency>

该问题是怎么引起的?(最新版上已修复的会直接close掉)

项目中引入动态表名 SQL 解析器后不会调用重写的dynamicTableName()方法,因此,无法实现表名的替换,注册代码如下:

@Bean
public PaginationInterceptor paginationInterceptor() {
    PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
    DynamicTableNameParser dynamicTableNameParser = new DynamicTableNameParser();
    dynamicTableNameParser.setTableNameHandlerMap(new HashMap<String, ITableNameHandler>(2) {{
       put("mp_dt_voice", (metaObject, sql, tableName) -> {
            return "voice_1";
       });
    }});    
paginationInterceptor.setSqlParserList(Collections.singletonList(dynamicTableNameParser));
    return paginationInterceptor;
}

实体类配置正确,同样的代码移动到官方demo中,能够运行。因此会有环境冲突吗?Debug能够发现该Bean被调用,但是重写的方法没有被调用。
所有外部库如下:
org.springframework.boot:spring-boot-starter-web:2.2.4.RELEASE
org.springframework.boot:spring-boot-starter-test:2.2.4.RELEASE
com.alibaba:druid-spring-boot-starter:1.1.10
mysql:mysql-connector-java:8.0.13
org.projectlombok:lombok:1.16.22
org.springframework.boot:spring-boot-starter-jdbc:2.2.4.RELEASE
org.springframework.boot:spring-boot-starter-aop:2.2.4.RELEASE
com.baomidou:mybatis-plus-boot-starter:3.3.1
junit:junit:4.12

重现步骤

报错信息

查询结果
表名没有被替换,重写的方法也没有被调用。

评论 (2)

点木 创建了任务
点木 关联仓库设置为baomidou/mybatis-plus
点木 修改了描述
展开全部操作日志

要不发份你的代码过来排查下.

青苗 任务状态待办的 修改为已完成

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(3)
399953 nieqiurong 1669447047 12260 jobob 1695284587 1887315 tygongquan 1578961786
Java
1
https://gitee.com/baomidou/mybatis-plus.git
git@gitee.com:baomidou/mybatis-plus.git
baomidou
mybatis-plus
mybatis-plus

搜索帮助