前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mybatis-plus动态表名

mybatis-plus动态表名

作者头像
阿超
发布2022-08-16 21:10:09
1K0
发布2022-08-16 21:10:09
举报
文章被收录于专栏:快乐阿超

却是平流无石处,时时闻说有沉沦。——唐•杜荀鹤

配置

代码语言:javascript
复制
@Bean
  public MybatisPlusInterceptor mybatisPlusInterceptor() {
      MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
      DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = new DynamicTableNameInnerInterceptor();
      HashMap<String, TableNameHandler> map = new HashMap<String, TableNameHandler>(2) {{
          put("user", (sql, tableName) -> {
              String year = "_2018";
              int random = new Random().nextInt(10);
              if (random % 2 == 1) {
                  year = "_2019";
              }
              return tableName + year;
          });
      }};
      dynamicTableNameInnerInterceptor.setTableNameHandlerMap(map);
      interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor);
      return interceptor;
  }

完整配置类

代码语言:javascript
复制
package com.ruben.simpleideaspringboot.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.handler.TableNameHandler;
import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.DynamicTableNameInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.security.SecureRandom;
import java.util.HashMap;

/**
 * mybatis-plus配置类
 *
 * @author <achao1441470436@gmail.com>
 * @since 2021/5/20 0020 9:29
 */
@Configuration
public class MybatisPlusConfig {

    /**
     * 分页拦截器
     *
     * @author <achao1441470436@gmail.com>
     * @since 2021/5/20 0020 9:29
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
        // 阻止全表更新与删除
        BlockAttackInnerInterceptor blockAttackInnerInterceptor = new BlockAttackInnerInterceptor();
        // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
        paginationInnerInterceptor.setOverflow(true);
        paginationInnerInterceptor.setMaxLimit(200L);
        DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = new DynamicTableNameInnerInterceptor();
        HashMap<String, TableNameHandler> map = new HashMap<String, TableNameHandler>(2) {{
            put("user", (sql, tableName) -> {
                String year = "_2018";
                int random = new SecureRandom().nextInt(10);
                if (random % 2 == 1) {
                    year = "_2019";
                }
                return tableName + year;
            });
        }};
        dynamicTableNameInnerInterceptor.setTableNameHandlerMap(map);
        interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor);
        interceptor.addInnerInterceptor(paginationInnerInterceptor);
        interceptor.addInnerInterceptor(blockAttackInnerInterceptor);
        return interceptor;
    }


}

我们这里把user表名替换成user_2018或者user_2019随机

演示如下,我们原本表名为user,执行查询后可以看到替换成了user_2018

再次执行变成了user_2019

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档