0
点赞
收藏
分享

微信扫一扫

MybatisPlusInterceptor拦截器类动态设置表名

秀儿2020 2022-04-13 阅读 25
java
@Configuration
@MapperScan("com.mapper*")
public class MybatisPlusConfig {

    /**
     * 动态表名处理
     * @return
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = 
        	new DynamicTableNameInnerInterceptor();
        // 设置动态表名为【基础表名_year_month】
        dynamicTableNameInnerInterceptor.setTableNameHandlerMap(
        	new HashMap<String, TableNameHandler>(2) {{
            put("tb_tablename", (sql, tableName) -> {
                int year = Calendar.getInstance().get(Calendar.YEAR);
                int month = Calendar.getInstance().get(Calendar.MONTH)+1;
                String monthString = "";
                if(month<10){
                    monthString = "0"+month;
                }else {
                    monthString = String.valueOf(month);
                }
                return tableName + "_" + year + "_" + monthString;
            });
        }});
        // 设置动态表名拦截器
        interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor);
        return interceptor;
    }

}

注意:

  1. @Configuration注解不可丢
  2. @MapperScan配置需要扫描的包
举报

相关推荐

0 条评论