sql 语句对应关系显示 _set

package

com20161125;

public

class SqlElementsWrapper {

/*

* oriOutput: {a.*}, {b.*}, a.runId

* alias: a, b

* table: TableA, TabelB

*/

String oriOutput;

String alias;

String table;

public void setAlias() {

if (oriOutput.indexOf("{") > -1) {

this.alias = oriOutput.replace("{", "").replace(".*}", "");

return;

}

this.alias = oriOutput.substring(0, oriOutput.indexOf("."));

}

@Override

public String toString() {

return this.oriOutput + " " + this.alias + " " + this.table;

}

}

package

com20161125;

import

java.util.HashSet;

import

java.util.Set;

public

class GetSqlQueryTest {

public static void main(String[] args) {

Set<SqlElementsWrapper> ss = getOutputElementEntityMap(

"select {a.*},{b.*},a.runId from TableA a,TableB b where a.runId=b.runId");

for (SqlElementsWrapper obj : ss) {

System.out.println(obj.toString());

}

}

private static Set<SqlElementsWrapper> getOutputElementEntityMap(String sql) {

Set<SqlElementsWrapper> set = getOutputAlias(sql);

for (SqlElementsWrapper wrapper : set) {

getTableName(sql, wrapper);

}

return set;

}

private static void getTableName(String sql, SqlElementsWrapper wrapper) {

int beginIndex = sql.indexOf("from") + "from".length();

int endIndex = sql.indexOf("where") == -1 ? sql.length() : sql.indexOf("where");

String popObjStr = sql.substring(beginIndex, endIndex).trim();

String[] arr = popObjStr.split(",");

for (String obj : arr) {

String[] objAlias = obj.split(" ");

String alias = objAlias[1];

if (wrapper.alias.equals(alias)) {

String tableName = objAlias[0];

wrapper.table = tableName;

}

}

}

private static Set<SqlElementsWrapper> getOutputAlias(String sql) {

int beginIndex = sql.indexOf("select") + "select".length();

int endIndex = sql.indexOf("from");

String tempObjStr = sql.substring(beginIndex, endIndex).trim();

String[] arr = tempObjStr.split(",");

Set<SqlElementsWrapper> set = new HashSet<SqlElementsWrapper>();

for (String output : arr) {

SqlElementsWrapper a = new SqlElementsWrapper();

a.oriOutput = output;

a.setAlias();

set.add(a);

}

return set;

}

}

时间: 2024-08-07 02:24:17

sql 语句对应关系显示 _set的相关文章

sql 语句对应关系显示

import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; public class SqlStringParseDemo { publicstaticvoid main(String[] args) { String sql = "Select {a.*},{b.*},{c.*} from tableA a,tableB b,tableC c"; // key: a, value: table

如何在mysql查找效率慢的SQL语句

如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow-queries[=file_name]选项启动时,mysqld 会写一个包含所有执行时间超过long_query_time 秒的SQL语句的日志文件,通过查看这个日志文件定位效率较低的SQL .下面介绍MySQL中如何查询慢的SQL语句 一.MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句 1,slow_query_log 这

在Hibernate中使用原生SQL语句

使用原生SQL查询必须注意:程序必须选出所有的数据列才可被转换成持久化实体.假设实体在映射时有一个<many-to-one../>的关联指向另外一个实体,则SQL查询中必须返回该<many-to-one../>映射的外键列,否则将导致抛出"column not found"异常.最简单的做法是,在SQL字符串中使用星(*)来表示返回所有列.    在原生SQL语句中一样支持使用参数,这些参数即可使用问号参数(?),也可使用名字参数. 示例1:名字参数public

如何查找MySQL中查询慢的SQL语句

本文导读:如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow-queries[=file_name]选项启动时,mysqld 会写一个包含所有执行时间超过long_query_time 秒的SQL语句的日志文件,通过查看这个日志文件定位效率较低的SQL .下面介绍MySQL中如何查询慢的SQL语句 一.MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句 1,slow_query_

mysql优化SQL语句消耗

开启SQL的慢日志查询 配置文件文件中填写如下配置并重启mysql log_queries_not_using_indexes #这个参数设置为ON,可以捕获到所有未使用索引的SQL语句,尽管这个SQL语句有可能执行得挺快. log-bin=mysql-bin   slow_query_log=on     long_query_time=2     log_queries_not_using_indexes=on   slow-query-log-file=/var/lib/mysql/slo

基本sql语句--sql执行流程及调优

SQL分类 和大多数关系型数据库一样,mysql也具有以下几种类型的SQL语句: DML语句:主要用于新增,修改,删除和查询数据库的记录,关键字:insert,update,delete和select DCL语句:主要用于控制数据库对象(库,表,字段.用户等对象)的访问,关键字:grant,revoke DDL语句:主要用于定义和修改数据库对象的结构,常用关键字:create,drop,alter 注:DML(DELETE,UPDATE,SELECT)才 是我们关注的重点,而其中DELETE,U

MySql使用show processlist查看正在执行的Sql语句

今天上班例行的查看了下服务器的运行状况,发现服务器特卡,是mysqld这个进程占用CPU到了99%导致的. 比较好奇是那个程序在使用mysql导致cpu这么高的,通过show processlist命令查看了当前正在执行的sql语句,从而定位到了对应的程序,发现代码中有一个死循环在不停的查询导致cpu占用99%,原因找到了问题就好解决了. 这里简单的记录一下processlist的用法: processlist 命令的输出结果显示了有哪些线程在运行,可以帮助识别出有问题的查询语句,两种方式使用这

DBA巡检常用的SQL语句

1.查看当前数据库有多少process select count(1) from v$process; 2.查看当前数据库有多少session(session=process*1.1) select count(1) from v$session; 3.查看当前执行的SQL语句 select a.program,b.spid,c.sql_text,c.sql_id from v$session a,v$process b,v$sqlarea c where a.paddr=b.addr and

Mysql 定位执行效率低的sql 语句

一.通过MySQL慢查询日志定位执行效率低的SQL语句. MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow-queries[=file_name]选项启动时,mysqld 会写一个包含所有执行时间超过long_query_time 秒的SQL语句的日志文件,通过查看这个日志文件定位效率较低的SQL . 1.通过命令: show variables like '%query%'  查看是否开启慢查询日志. 开启前 开启后 slow_query_log :   on