zoukankan      html  css  js  c++  java
  • mybtis plus 3.2.0 动态表名sql解析器的配置

    一.Configuration

    @Configuration
    public class MybatisPlusConfiguration {
    
        public static ThreadLocal<String> inputTableName = new ThreadLocal<>();
    
        @Bean
        public PaginationInterceptor paginationInterceptor(){
            PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
            List<ISqlParser> sqlParserList = new ArrayList<>();
            DynamicTableNameParser dynamicTableNameParser = new DynamicTableNameParser();
            HashMap<String, ITableNameHandler> map = new HashMap<>();
            map.put("user", (metaObject, sql, tableName) -> inputTableName.get());
            dynamicTableNameParser.setTableNameHandlerMap(map);
            sqlParserList.add(dynamicTableNameParser);
            paginationInterceptor.setSqlParserList(sqlParserList);
            paginationInterceptor.setSqlParserFilter(metaObject -> {
                MappedStatement statement = SqlParserHelper.getMappedStatement(metaObject);
            //如果是selectById方法,则表名不会被替换,其他的会被动态替换表名
    return "com.mp.dao.UserMapper.selectById".equals(statement.getId()); }); return paginationInterceptor; } }

    二.测试

    传入参数

        @Test
        public void testTableNAme(){
            MybatisPlusConfiguration.inputTableName.set("user_2020");
            userMapper.selectList(null);
        }

    三.运行结果

     可以观察到查询的表名已经被替换

  • 相关阅读:
    欧几里得 与 扩展欧几里得
    hdu-1559 最大子矩阵
    hdu-1081 To The Max (最大子矩阵和)
    Oracle处理排序问题
    报表犯的错误
    MySQL中汉字一二三排序问题
    MySQL复习
    帆软查看显示和填报显示
    MySQL某年查询12个月份的数据
    mysql中去日期格式
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/12617092.html
Copyright © 2011-2022 走看看