logobsky
首页 留言 登录
mybatis-plus

@Configuration

public class MybatisConfiguration {

@Bean

public DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor() {

// 准备一个Map,用于存储TableNameHandler

//Map map = new HashMap<>(1);

// 存入一个TableNameHandler,用来替换points_board表名称

// 替换方式,就是从TableInfoContext中读取保存好的动态表名

// Map map = new HashMap<>(1);

// map.put("points_board", (sql, tableName) -> TableInfoContext.getInfo() == null ? tableName : TableInfoContext.getInfo());

// return new DynamicTableNameInnerInterceptor(map);

//上面是官方的报错,用下豆包的

TableNameHandler tableNameHandler = (sql, tableName) -> {

String dynamicTableName = TableInfoContext.getInfo();

return dynamicTableName != null ? dynamicTableName : tableName;

};

// 创建拦截器并添加表名处理器(3.5+版本方式)

DynamicTableNameInnerInterceptor interceptor = new DynamicTableNameInnerInterceptor();

// 为points_board表添加处理器

interceptor.setTableNameHandler(tableNameHandler);

return interceptor;

}

}上面对应的插件配置类,用于配置修改表名

对应的拦截器插件注入

@Bean

@ConditionalOnMissingBean

public MybatisPlusInterceptor mybatisPlusInterceptor(@Autowired(required = false) DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor) {

MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();

//该拦截器必须在分页拦截器的前面 ,注入

if(dynamicTableNameInnerInterceptor!=null){

interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor);

}

PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);

paginationInnerInterceptor.setMaxLimit(200L);

interceptor.addInnerInterceptor(paginationInnerInterceptor);

interceptor.addInnerInterceptor(new MyBatisAutoFillInterceptor());

return interceptor;

}

上一篇:线程池
下一篇:rabbitmq 相关知识
验证码
评论留言 (0条)