当前位置: 首页 > news >正文

邯郸网站建设公司大连seo网站推广

邯郸网站建设公司,大连seo网站推广,帝国网站管理系统入门教程,如何在网站上做咨询浮动窗口一、前言 在开发中&#xff0c;有时我们可能会需要获取SQL中的表名&#xff0c;那么因为不同的数据源类型SQL会存在部分差异&#xff0c;那么我们就可以使用alibaba 的druid包实现不同的数据源类型的sql解析。 二、引入相关maven依赖 <dependency><groupId>com.a…

一、前言
在开发中,有时我们可能会需要获取SQL中的表名,那么因为不同的数据源类型SQL会存在部分差异,那么我们就可以使用alibaba 的druid包实现不同的数据源类型的sql解析。

二、引入相关maven依赖

<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version></dependency>

三、通过工具类SqlUtils实现对SQL的解析。

public class QualitySqlUtils {/***  根据sql及数据源类型获取表名*/public static List<String> getSelectSqlTable(String sql, String dbType) {List<String> tableList = new ArrayList<>();List<SQLStatement> stmtList = SQLUtils.parseStatements(sql, dbType);SchemaStatVisitor visitor;for (SQLStatement sqlStatement : stmtList) {if (DbType.mysql.name().equalsIgnoreCase(dbType)) {visitor = new MySqlSchemaStatVisitor();} else if (DbType.hive.name().equalsIgnoreCase(dbType)) {visitor = new HiveSchemaStatVisitor();} else if (DbType.postgresql.name().equalsIgnoreCase(dbType)) {visitor = new PGSchemaStatVisitor();} else if (DbType.oracle.name().equalsIgnoreCase(dbType)) {visitor = new OracleSchemaStatVisitor();} else {visitor = new SchemaStatVisitor(DbType.of(dbType));}sqlStatement.accept(visitor);Map<TableStat.Name, TableStat> tables = visitor.getTables();for (Map.Entry<TableStat.Name, TableStat> entry: tables.entrySet()){String value = entry.getValue().toString();if (StringUtils.isNotBlank(value)) {tableList.add(entry.getKey().getName());}}}return tableList;}/*** 根据sql获取查询的字段*/public static Map<String, String> getSelectSqlColumn(String sql, String dbType) {Map<String, String> columnMap = new HashMap<>();List<SQLStatement> stmtList = SQLUtils.parseStatements(sql, dbType);for (int i = 0; i < stmtList.size(); i++) {SQLStatement stmt = stmtList.get(i);if (stmt instanceof SQLSelectStatement) {SQLSelectStatement sqlSelectStatement = (SQLSelectStatement) stmt;SQLSelect select = sqlSelectStatement.getSelect();SQLSelectQueryBlock query = (SQLSelectQueryBlock) select.getQuery();List<SQLSelectItem> selectList = query.getSelectList();selectList.forEach(item->{columnMap.put(item.getExpr().toString(), item.getAlias());});}}return columnMap;}
}

三、测试结果

public class testDemo{public static void main(String[] args) {String sql = "select t.* from table1 as t left join table2 t2 on t.id = t2.id";List<String> tableList =getSelectSqlTable(sql, "mysql");System.out.println("获取到的表名: "+tableList);}
}

运行结果如下:

在这里插入图片描述
大家感兴趣可以尝试下。

http://www.ds6.com.cn/news/67283.html

相关文章:

  • 张家口做网站多少钱泰州网站优化公司
  • 龙岩网站制作公司网站关键词优化费用
  • 烟台网站开发制作百度首页 百度
  • 建行手机app下载开源seo软件
  • 做的比较好旅游网站推广平台的方式有哪些
  • 保定网站建设技术支持网络广告的发布方式包括
  • 上海seo优化外包公司无锡seo排名收费
  • 网站建设合同的性质济南市新闻最新消息
  • 2003访问网站提示输入用户名密码百度网页入口
  • wordpress小说网站模板下载地址网页设计模板网站免费
  • 北京做网站海宇勇创如何宣传推广自己的店铺
  • 公司企业网站怎么建设seo软件开发
  • 怎样给网站做appseo是什么意思如何实现
  • 南充网站建设略奥网络数字营销网站
  • phpcms校园网站如何优化网络环境
  • 网站建设 流程 域名申请深圳网站制作哪家好
  • 石家庄做网站的有哪些公司搜狗seo排名软件
  • 08系统iis信息管理器怎么建设网站免费发布信息网网站
  • 中国建设银行属于什么类型网站新闻早知道
  • 自己做的网站打不开怎么搞网站关键词优化怎么弄
  • 个人备案网站可以做电影站吗互联网推广好做吗
  • 做行业网站能赚钱吗网站免费推广的方法
  • 做网站去哪里接单手机创建网站教程
  • 网站新闻专题怎么做电脑培训学校课程
  • 外贸b2b网站如何做外链企业管理培训机构排名前十
  • 建立网站需要准备的材料百度百科推广费用
  • iis网站日志关键词排名手机优化软件
  • 海口网站制作网站百度首页排名优化多少钱
  • 一学一做腾讯视频网站吗最新旅游热点
  • 网站域名解释怎么做哪里可以做