mybatisplus的动态表头更换

mybatisplus的动态表头更换

 

1.实现思路:先有拦截器,拦截到请求,然后通过表头解析器,去解析表头信息(这里在entity类里面就不可以用@TableName去指定固定的表,但前提是你切换的表的表结构一定要一致)。解析完表头,就可以对你需要插入的表名进行一个动态拼接。

 

这些是配置代码,写在config里面,可以自己额外写一个包,或者放在utils包里面,无关紧要。只要有@Configuration就可以了,@Bean注入到容器里面就可以了。
package com.cx.core.utils;

import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.extension.parsers.DynamicTableNameParser;
import com.baomidou.mybatisplus.extension.parsers.ITableNameHandler;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.text.SimpleDateFormat;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;

@Configuration
public class MybatisPlusConfig {
   @Bean
   public PaginationInterceptor paginationInterceptor() {
       PaginationInterceptor paginationInterceptor = new PaginationInterceptor();  //分页拦截器
       DynamicTableNameParser dynamicTableNameParser = new DynamicTableNameParser(); //动态表名解析器
       dynamicTableNameParser.setTableNameHandlerMap(new HashMap<String, ITableNameHandler>(2) {{
           put("bto_device_r", (metaObject, sql, tableName) -> {  //大括号里面写,自己的拼接逻辑即可。后面那点,就是动态拼接的部分,拦截也是这个前半部分。
               // metaObject 可以获取传入参数,这里实现你自己的动态规则
               // 这里我使用当前年月日份做后缀
               Date date=new Date();  //new一个当前时间
               SimpleDateFormat simpleDateFormat=new SimpleDateFormat("YYYYMMdd");   //转换成这个时间格式
               int datetime = Integer.parseInt(simpleDateFormat.format(date));  //将当前时间转换成,上面指定的格式
               return tableName + "_" + datetime; //动态拼接
          });
      }});
       paginationInterceptor.setSqlParserList(Collections.singletonList(dynamicTableNameParser));
       return paginationInterceptor;
  }
}
 <dependency>
           <groupId>com.baomidou</groupId>
           <artifactId>mybatis-plus</artifactId>
           <version>3.4.2</version>
       </dependency>

上面的配置文件如果有问题,就要注意,mybatisplus的版本问题啦,上面这个版本是可以用的,当然过时不会影响使用。

 

2.不需要其他配置了,会进行自动配置了。

posted @ 2022-08-12 16:05  锦书南辞  阅读(223)  评论(0编辑  收藏  举报