拦截sql修改表名

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);
    }

 

后台兼职接单中,联系我微信:wjf88520

一杯奶茶协助解决各类开发运维问题,欢迎交流

by wujf

mail:921252375@qq.com

本文转载于网络 如有侵权请联系删除

相关文章

  • Java中IO流-21-图片加密简单实现

    大家好,又见面了,我是你们的朋友全栈君。这篇我们利用流来处理图片加密,当然这里没有处理到打开图片,提示输入密码的这么好友好效果。图片加密,也是把一个图片字节读取,然后进行加密运算,最后拷贝成新的图片文件。简单来说,这个过程原理就是,一个数如何被同一个数异或两次,那么结果就等于这个数本身。第一次进行异或就是图片加密过程,给图片每一个字节都进行加密,第二次异或就是解密过程。1.图片加密过程packageio; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.FileOutputStream; importjava.io.IOException; publicclassTest1{ publicstaticvoidmain(String[]args)throwsIOException{ FileInputStreamfis=newFileInputStream("copy.png"); FileOutputStreamfos=newFi

  • Java分页需求

      近期在实现项目接口时,经常需要分页功能。有时返回“String”,有时是“Object”格式的分页List。针对这种情况,本人用java实现对List分页。第一版packageorg.sun.java; importjava.util.ArrayList; importjava.util.List; /** * *@authorAdministrator *@date2016年7月16日 */ publicclassSubListOperation{ finalstaticintCOUNT=18; publicList<String>init(intsize){ List<String>lists=newArrayList<String>(); for(inti=0;i<size;i++){ lists.add("t"+(i+1)); } returnlists; } /** * *@parampageNum *@parampageSize *@return简单分页功能 */ publicList<Stri

  • 使用gradle插件发布项目到nexus中央仓库

    简介Sonatype提供了一个叫做开源软件资源库托管OpenSourceSoftwareRepositoryHosting(OSSRH)的工具,帮助我们来方便的将项目发布到中心仓库中。但是这个工具和我们的项目构建是割裂的,尤其是在CI集成构建中,很难做到自动化。Gradle是一个很好的构建工具,灵活而又强大,可不可以直接在Gradle中的任务中直接构建和上传到中央仓库或者其他自定义的nexus仓库中呢?答案是肯定的。GradleNexusPublishPlugin历史今天要给大家介绍的gradle插件名字叫做GradleNexusPublishPlugin,最近才发布了1.0.0版本,有小伙伴可能要问了,gradle出来这么久了,最近才有这样的插件吗?其实不然,我们来讲一下gradleNexus发布插件的历史。2015年,MarcinZajączkowski创建了gradle-nexus-staging-plugin,该插件可在Nexus存储库管理器中关闭和释放staging存储库。使用这个插件就可以直接从代码中将Gradle项目发布到MavenCentral仓库。多年来,它已经在全球

  • 中国联通5G用户数可能远落后于中国电信,共建共享亏大了?

    而中国电信的用户规模是中国联通的4倍,这意味着中国电信用户对于5G网络的使用量是中国联通的4倍!来源|悲了伤的白犀牛图片来源|视觉之前一篇文章《三大运营商用户数有增有跌,“基础通信”这碗饭还能干多久?》中提出了一个颇值得讨论话题:中国联通5G用户远低于中国电信,共建共享是否吃亏了? 2019年9月9日,中国电信与中国联通共同签署了《5G网络共建共享框架合作协议书》。根据合作协议,双方在全国范围内合作共建一张5G接入网络,共享5G频率资源,5G核心网各自建设。双方划定区域,分区建设,谁建设、谁投资、谁维护、谁承担网络运营成本。从共建共享规则来看,规则对双方是公平的。为了尽快建设一张能与中国移动抗衡的5G网络,中国联通和中国电信都投入了巨大的资源——2020年,中国联通5G资本开支约为350亿元,中国电信5G资本开支约为约453亿元,中国电信比中国联通多出100亿左右,但这些投资不光用于接入网,还用于核心网、传输配套、业务平台、计费改造等。我预测在接入网的共建共享上,双方的投入应该是基本相当的。制定了公平规则,划拨了基本对等的资金规模,确定了各自建设的区域,双方就开始大张旗鼓地推进5G共建

  • SAP 公司间STO场景中外向交货单过账后自动触发内向交货单功能的实现

    SAP公司间STO场景中外向交货单过账后自动触发内向交货单功能的实现如下STO,是从公司代码SZSP转入CSAS,如下图示的内向交货单180018660。该内向交货单是在外向交货单80016325发货过账的时候自动触发的,如何实现这个功能?1)定义输出类型(outputtype)SPEDSPRO>LogisticExecution>Shipping>BasicShippingFunctions>OutputControl>OutputDetermination>MaintainOutputDeterminationforOutboundDeliveries>MaintainOutputTypesT.Code–V/34Step2)将输出类型SPED分配给输出确定策略SPRO>LogisticExecution>Shipping>BasicShippingFunctions>OutputControl>OutputDetermination>MaintainOutputDeterminationforOutbou

  • 「面试」破(B)站之旅

    此次B站服务端开发面试之旅可谓惊险,不过通过对大部分面试题套路的掌握,不出意外还是拿下了,下面我们来看看这些骚题是不是常见的不能再常见的了。这些面试题看了就能面上?当然不是,只是通过这些题让自己知道所欠缺的是什么,以及可以去看看哪些资料。1操作系统相关自旋锁和一般锁的区别是什么?为什么要使用自旋锁?当一个线程在获取锁的时候,如果这个锁已经被其他线程获取,那么这个线程不会破门而入,而是循环等待,但是嗷嗷待哺,需要不断地嗷嗷叫判断锁是否被成功获取,直到获取到锁才会退出循环。自旋锁通常会出现哪些问题?如果某个线程拿着锁死不放手,其他线程没法拿到这把锁,只好等待获取锁的线程进入循环等待的状态,等待不是睡觉,还是会消耗CPU,等待久了就会导致CPU的使用率太高。那么自旋锁和其他锁到底有啥不同?从线程状态来看,自旋锁的状态是运行-运行-运行。而非自旋锁的状态是运行---阻塞---运行,所以自旋锁会更高效。不管是什么锁,都是为了实现保护共享资源而提出的一种锁机制,都是为了对某项资源的互斥使用。对于互斥锁而言,如果资源已经被占用,那么资源的申请者只会进入睡眠的状态。而自旋锁不会引起调用者睡眠,而是一直

  • Java面试题| 框架篇

    最近小编时常会收到一些用户的后台留言,比如:“面试”、“2020”、“2020Java”、“面试题”等等,追溯了下源头,原来就是几周前发布的《Java面试题大全2020版》作祟,在此我也跟大家再说下,需要完整版JAVA面试题大全的,大家可以后台留言以下关键词:“2020版JAVA”、“2020”、“面试题”、“2020java”(之前关键词过于复杂,发现大家也懒得写,现在特意增设几个)。今天这篇也是应用户在后台留言的需求而另外增设的,给大家整理了一些Java面试框架类内容~话不多说,正式开始:1:SSH框架(1)SSH三大框架的概述SSH为struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层(实体层),以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。struts标签库:Struts2默认的表达式语言是OGNL(Object-GraphNavigationLanguage),通过它可以存取对象的任意属性、调用对象的方法、遍历整个对象的

  • 面试驱动技术之 - isa && 元类 && 函数调用

    伪装成首页.jpg面试驱动技术之-带着面试题来找答案一个NSObject对象,占用多少内存对象方法与类方法的存放在哪什么是isa指针什么是meta-classmegsend是如何找到方法的@implementationMNSubclass -(void)compareSelfWithSuperclass{ NSLog(@"selfclass=%@",[selfclass]); NSLog(@"superclass=%@",[superclass]); } @end复制输出的结果是什么。。。友情tips:如果上诉问题你都知道答案,或者没有兴趣知道,就可以不用继续往下看了,兴趣是最好的老师,如果没有兴趣知道这些,往下很难读得进去~OC对象的本质我们平时编写的Objetcive-C,底层实现都是C/C++实现的image问:Objetcive-C基于C/C++实现的话,Objetcive-C对象相当于C/C++中的什么数据结构呢?@interfaceMNPerson:NSObject { int_age; double_height; NSStrin

  • WPF一步一脚印系列(1):万事起头难

     一直从事Asp.Net的开发,而C/S的开发方面简直是一片空白,于是从上星期开始就痛下决心开始学习WPF。我采取的策略是网上看基础资料+做简单的demo练习+网上查资料。从csdn上下了个比较不错的基础讲解文档,花了几天时间终于把它看完,算是有个基本了解吧,今天开始写些小练习。 这个系列主要是用来记录自己学习WPF的心路历程,以实例为主配合原理和注意点的说明,有纰漏之处请大家多多指正!!^_^实例1——倒计算器                                                                                          最终效果:Window1.xaml:1<Windowx:Class="CountingLeader.Window1" 2xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3xmlns:x="http://schemas.microsoft.com/winfx/200

  • AX9000 Docker 部署指南

    废话不多说,先看配置作为小米家主打电竞的路由器,AX9000的配置还是非常强劲的硬件参数处理器QualcommIPQ8072A4核A532.2GHzCPU⽹络加速引擎双核1.7GHzNPU内存1GB2.4GWi-Fi4×4(最高支持IEEE802.11ax协议,理论最高速率可达1148Mbps)5.2GWi-Fi4×4(最高支持IEEE802.11ax协议,理论最高速率可达4804Mbps)5.8GWi-Fi4×4(最高支持IEEE802.11ax协议,理论最高速率可达2402Mbps)产品天线外置高增益天线+内置AIoT天线产品散热主动散热整机接口1个10/100/1000/2500M自适应WAN/LAN口(AutoMDI/MDIX) *1个10/100/1000M自适应WAN/LAN口(AutoMDI/MDIX)3个10/100/1000M自适应LAN口(AutoMDI/MDIX)*LED指示灯8个(SYSTEM指示灯×1,INTERNET指示灯×1,网口灯×5,氛围灯×1)系统重置键1个USB3.0接口1个Mesh组网按键1个电源按键1个电源输入接口1个协议标准IEEE802.1

  • vue数据双向绑定原理-observer

    ​​1)vue数据双向绑定原理-observer ​2)vue数据双向绑定原理-wather​ 3)vue数据双向绑定原理-解析器Complievue数据双向绑定原理,和简单的实现去他喵的底层原理,框架内核,老夫写代码只用Jquery。个人觉得,不论是否是长期与之交集,还是应该看下核心的东西.多多了解高人是如何实现的,这样才能学到更多的知识,才能成长进步. 倘若某天被人问起,某种框架内裤,其实现原理,那么只能是一脸懵逼了..实现数据绑定的做法有大致如下几种:发布者-订阅者模式(backbone.js)脏值检查(angular.js)数据劫持(vue.js)vue.js则是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。假如写过C#winform自定义控件的,我想更好理解之后的逻辑和实现原理在C#中当控件的某个属性发生了变化,就刷新视图priveateinta; publicintA { get{returna;} set{if(a!=value){a

  • 简单理解TCP/IP协议

    一、什么是TCP/IP   TCP/IP是一个协议族,是因为TCP/IP协议包括TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等许多协议,这些协议一起称为TCP/IP协议。通信类似于语言的沟通,可以把协议理解为语言沟通,大家都说中文,咱们两个人能够互相交流。   TCP/IP协议族按照层次分为链路层、网络层、传输层、应用层四个层次。(与TCP/IP协议并列的还有OSI网络框架模型---开放式系统互连参考模型,分为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层七个层次)   为了更加形象的说明协议,可以把“数据链路层”比作一个人,但是这个人不会说话,交流起来比较困难。为了更方便的交流,便引出了“网络层”,可以认为它是会说话的人,那么大家都会说话,但是一个人说英语一个人说中文,大家还是不能够更好的沟通。那么接下来大家该讨论下如何沟通,必须大家都要说中文,这样大家才能理解彼此说的是什么意思,“传输层”就可以认为会说中文的人。这样在传输层大家就能实现正常的通信了。为了大家更方便的沟通,或者说让沟通看起来更加华丽更加实用。这时候“应用层”便应运

  • bfs和dfs基础

    #bfs&dfs graph={ "A":["B","C"], "B":["A","C","D"], "C":["A","B","D","E"], "D":["B","C","E","F"], "E":["C","D"], "F":["D"], } defbfs(graph,s): queue=[] queue.append(s) seen=set() seen.add(s) whilelen(queue)>0: vis=queue.pop(0) nodes=graph[vis] forwinnodes: ifwnotinseen: queue.append(w) seen.add(w) print(vis) defdfs(graph,s): stack=[] stack.append(s) seen=set() seen.add(s) whilelen(stack)>0: vis=stack.pop() nodes=graph[vis] forwinnodes: ifwnotinseen: stack.append(w) seen.add(w) prin

  • python 键盘中断子线程及graceful exiting方案

    最近需要实现一个服务程序的gracefulexiting,保证在退出前关闭所有已创建的子线程 python借助KeyboardInterrupted异常响应键盘中断,因此首先尝试在子线程中try-catch这个异常(失败) 查阅原因,键盘中断只有主线程可以响应并处理,子线程无法收到这个异常。因此可以使用类似这样的结构: cond=True defstart_task(): whilecond: #dosomething defterminate_task(): #breaksomeconditions cond=False defmain(): _t=Thread(target=start_task) _t.start() try: whileTrue: pass finally: terminate_task() _t.join() if__name__=='__main__': main() 复制 除此之外,查阅资料发现python的signal包可以实现类似java的钩子,处理程序终止信号。用法可以参考https://blog.csdn.net/weixin_423502

  • 必知必会的JavaJDK工具

    JDK中有很多用于监控诊断的系统工具,对于Java程序员来说,无疑是用来了解自己程序运行时性能好坏的强大工具。 在JDK的bin目录下就可以找到这些工具。 JPS 在Linux有一个命令叫做ps,可以查看系统当前所有的进程,而JDK提供的jps也是类似,查看正在运行的Java进程。 可以看到该命令的参数。 在默认情况下,jps的输出信息包括Java进程的进程ID以及主类名。 我们还可以通过追加参数,来打印额外的信息。 例如,-l将打印模块名以及包名; -v将打印传递给Java虚拟机的参数(如-XX:+UnlockExperimentalVMOptions-XX:+UseZGC); -m将打印传递给主类的参数。 也可以使用-lvm一同使用。 在JVM启动时,会创建一个perfmemory来存放PerfData,如果使用了参数-XX:-UsePerfData,禁止其它进程可见,那么jps命令就无法查看到该Java进程了。 Jstat Jstat命令是用于打印某个Java进程的运行数据。 它支持使用-class查看类加载相关的数据,-compiler和-printcompilat

  • 小发猫AI写作 could not resolve host 3360:Name or service not known 错误解决

    今天用小发猫AI智能写作,出现如下错误: could not resolve host 3360:Name or service not known错误解决 找了一圈的文档,终于解决了: 原因是服务器磁盘空间用完了,只要查看下哪个目录占用的磁盘空间多,然后把没用的数据删除,就解决了。 查看目录下文件的大小 du-h--max-depth=1work/testing1注释:work/testing:文件夹路径–max-depth=1:深度 小发猫可以:一键生成原创文章

  • 2018春节旅行大数据分析

    2018春节境内游产品价格同比上涨115%,均价:7179元,2018春节出境游产品价格同比上涨63%,均价:9641元,国内热门目的地:吉林,人均机票+酒店8000元。看来大家春节都喜欢玩雪:)其次是:三亚。北方人喜欢温暖的春节,而南方人喜欢到北方玩雪,只是南方人消费更高。 出境游最爱去的境外目的地,仍然是:香港。看来港独什么的,大陆人不在乎啊。 不过真正的境外最爱去的,是日本。有钱人是不受政治影响的:)。 最土豪的出境游目的地是:南极。有钱就是任性,估计日后太空游是土豪必选的,没去过南极,没上过太空都算不上真正的有钱人:)

  • Java复习笔记4--实现多重继承

    实现多重继承 接口 内部类 上面使用接口实现多重继承是一种比较可行和普遍的方式,在介绍内部类的时候谈到内部类使的多继承的实现变得更加完美了,同时也明确了如果父类为抽象类或者具体类,那么我就仅能通过内部类来实现多重继承了。  

  • win10系统修改窗口边框颜色

    默认win10窗口的颜色是白色的,当其他窗口也是白色的时候,容易混乱     修改后如下   修改办法:桌面右键-点击如下图颜色菜单,在下图勾选上标题栏和窗口边框  

  • geoserver 关于跨域出错Cross-Origin Read Blocking (CORB) blocked cross-origin response

    首先检查geoserver跨域设置 之后查看请求的工作区是否正确 我的问题就是工作区出错了,写成另一个工作区,WMS服务无法发送请求

  • 知乎热搜,最全1184页Spring全家桶面试资料库,学习完大厂offer随你挑

    前言 Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring全家桶。 毋庸置疑,Spring早已成为Java后端开发的行业标准,无数的公司选择Spring作为基础的开发框架,大部分Java后端程序员在日常工作中也会接触到Spring。 很多研发人员把Spring看作心目中最好的Java项目,没有之一。 所以这是重点也是难点,工作中必须会,面试时肯定考。 Spring面试题(一) 1、一般问题 1.1、不同版本的SpringFramework有哪些主要功能? 1.2、什么是SpringFramework? 1.3、列举SpringFramework的优点。 1.4、SpringFramework有哪些不同的功能? 1.5、SpringFramework中有多少个模块,它们分别是什么? 1.6、什么是Spring配置文件? 1.7、Spring应用程序有哪些不同组件? 1.8、使用Spring有哪些方式? 2、依赖注入(Ioc) 2.1、什么是SpringIOC容器? 2.2、什么是依赖注入? 2.3、可以通过多少种方式完成依赖注入?.. 2.4、区分构造函数注入和

相关推荐

推荐阅读