首页 > 数据库 >拦截sql修改表名

拦截sql修改表名

时间:2023-02-22 17:12:43浏览次数:31  
标签:visitor MySqlASTVisitorAdapter 表名 stmtList sql 拦截 com

package com.xf.config;

import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitorAdapter;


public class MySqlExportTableAliasVisitor extends MySqlASTVisitorAdapter {
    @Override
    public boolean visit(SQLExprTableSource x) {
        x.setExpr("saas_base."+x.getTableName());
        return true;
    }
}

拦截sql后替换

protected String changeTable(String sql) {
        DbType dbType = JdbcConstants.MYSQL;
        List<SQLStatement> stmtList = SQLUtils.parseStatements(sql, dbType);
        for (SQLStatement sqlStatement : stmtList) {
            MySqlASTVisitorAdapter visitor = new MySqlExportTableAliasVisitor();
            sqlStatement.accept(visitor);
        }
        return SQLUtils.toSQLString(stmtList, JdbcConstants.MYSQL);
    }

 

标签:visitor,MySqlASTVisitorAdapter,表名,stmtList,sql,拦截,com
From: https://www.cnblogs.com/wujf/p/17145107.html

相关文章

  • linux安装postgresql三种方式
    本文转载自:http://blog.itpub.net/29654823/viewspace-2923532/linux下安装PostgreSQL可采用三种方式,二进制已编绎安装包、安装、源码安装三种方式进行安装方式1:yum安装,......
  • 主流的NOSQL产品 redis概述
    主流的NOSQL产品键值(key-Value)存储数据库相关产品:TokyoCabinet/TyrantRedisVoldemortBerkeleyDB典型应用:内容缓存只要用于处理大量数据的......
  • SQLite数据库的可视化
    AndriodStudio中自带了SQLite数据库,但是在操作过程中并不能直观看到我尝试用navicat与它链接但是只得到一个非即时的结果首先我们需要找到SQLite的数据库文件具体位置......
  • Z002错误汇总-远程连接阿里云MySQL出现(10060)错误
    1、我所遇到的问题的根本原因:没有将自己的IP设置到白名单里面; 2、解决方案:第一步:查看自己的IP第二步:复制这个地址,并添加到白名单,问题即解......
  • 【MySQL】012-事务
    一、基本介绍1、概念如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败; 2、操作①开启事务:starttransaction......
  • IntelliJ IDEA提示Unable to resolve table ‘表名‘
    一、说明我几乎看了CSDN所有大神的解答,尝试之后都无效! 通过自己研究,终于解决此问题,遂在此记录! 二、我的解决方案在正常使用IntelliJID......
  • 【MySQL】009-多表操作
    一、多表之间的关系1、一对一的关系(了解)例如:人与身份证,一个人只有一张身份证,一个身份证也只能属于一个人; 2、一对多的关系(最重要)例如:部分和......
  • 【MySQL】011-多表查询
    一、概述1、查询语法select列名列表from表名列表where... 2、笛卡尔积:有两个集合A、B,取这两个集合的所有组成情况;要完成......
  • 【MySQL】010-数据库设计的三大范式
    一、范式概述范式,数据库设计范式,数据库的设计范式,是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就......
  • 【MySQL】013-用户管理和权限管理(了解)
    一、用户管理1、添加用户CREATEUSER'用户名'@'主机名'IDENTIFIEDBY'密码'; 2、删除用户DROPUSER'用户名'@'主机名'; 3、修改用户......