- 浏览: 253905 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
aaddsfdsfsdfs:
var map = new AMap.Map('contain ...
【map】使用高德地图显示地图轨迹 -
di1984HIT:
xiang
【linux】使用bind进行DNS配置 -
di1984HIT:
分别算么??
【java】改写js百度地图测距方法 -
di1984HIT:
不错不错。。
【LBS】使用高德地图实现轨迹路线 -
di1984HIT:
不好用啊???
【map】使用高德地图显示地图轨迹
因为在项目中需要对sql进行解析,那么所以业务逻辑比较复杂。
然后就有了以下的代码。
有部分注释。大家可以勉强看看。
然后就有了以下的代码。
有部分注释。大家可以勉强看看。
package com.duduli.li; import java.util.HashMap; import java.util.IdentityHashMap; import java.util.Iterator; import java.util.Map; public class ParseSql { // 解析用户发送sql语句,获得用户所查询的表。以及获得所需要的列 public void parserSQL(String sql){ // mapTable获得表名和别名的一个map Map mapTable = new HashMap(); String tableName ; // select p.name,o.officedesc from person as p,office as o where p.officeID=o.id // select * from person if(sql.contains("as")){ // System.out.println("1:"+sql.substring(sql.indexOf("from")+4,sql.indexOf("where")).trim()); String s = sql.substring(sql.indexOf("from")+4,sql.indexOf("where")).trim(); String str[] = s.split(","); for(String st:str){ // string数组为获得表,map存表和简写对应关系 mapTable.put(st.substring(st.indexOf("as")+2, st.length()).trim(),st.substring(0, st.indexOf("as")-1)); // System.out.println("get the table: "+st.substring(0,st.indexOf("as")-1)); } }else{ // System.out.println(sql.substring(sql.indexOf("from")+4,sql.length()).trim()); tableName = sql.substring(sql.indexOf("from")+4,sql.length()).trim(); System.out.println("表名:"+tableName); } // System.out.println("table size is : "+mapTable.size()); Iterator it = mapTable.entrySet().iterator(); while(it.hasNext()){ Map.Entry m=(Map.Entry)it.next(); System.out.println(m.getKey()+" "+m.getValue()); } // 解析sql语句中所含有的列名 // select p.*,o.officedesc from person as p,office as o where p.officeID=o.id // if(sql.contains("*")){ // System.out.println(sql.substring(sql.indexOf("select")+6,sql.indexOf("from")).trim()); if(sql.contains(".")){ String tableMsg = sql.substring(sql.indexOf("select")+6,sql.indexOf("from")).trim(); String s [] = tableMsg.split(","); // mapColumns获得表别名和所需要的列名,使用IdentityHashMap的方法,对于有重复的KEY进行处理。 // 如果采用hashmap会对其进行覆盖。 Map mapColumns = new IdentityHashMap(); for(String s1:s){ System.out.println("000000"); mapColumns.put(s1.substring(0, s1.indexOf(".")), s1.substring(s1.indexOf(".")+1,s1.length())); } System.out.println(mapColumns); // System.out.println("columns size : " + mapColumns.size()); /*for(Object obj : mapColumns.keySet()){ Object value = mapColumns.get(obj ); System.out.println("values:"+value); }*/ /*for(Map.Entry entry:mapColumns.entrySet()){ System.out.println(entry.getKey()+"="+entry.getValue()); }*/ System.out.println(mapColumns.size()); Iterator iterator = mapColumns.entrySet().iterator(); while(iterator.hasNext()){ Map.Entry m=(Map.Entry)iterator.next(); System.out.println("table :"+mapTable.get(m.getKey())); // System.out.println(m.getKey()+" "+m.getValue()); System.out.println("columns:"+m.getValue()); } } // }else{ // System.out.println(sql.substring(sql.indexOf("select")+6,sql.indexOf("from")).trim()); // // } } public static void main(String[] args) { // new ParseSql().parserSQL("select p.name,o.officedesc from person as p,office as o where p.officeID=o.id"); // new ParseSql().parserSQL("select * from person"); // System.out.println("---------"); new ParseSql().parserSQL("select p.id,p.file,p.name,o.officedesc from person as p,office as o where p.officeID=o.id"); } }
发表评论
-
使用poi实现xlsx的读取
2018-08-31 17:01 597这里只是记录下,使用poi进行读取xlsx。 可以读取全部数据 ... -
使用java实现输出商品条码机商品数据信息
2018-08-29 15:43 986如图片所示 这里采用方案是: 1,使用jbarcode生成一 ... -
spring boot + jpa实现数据查询工作
2018-08-28 12:38 2369前期已经将mybatis和hibernate已经进行了掌握。 ... -
使用程序实现截屏获取teamview登录信息
2018-04-16 10:42 523很多的时候,我们需要使用teamview进行远程登录。 比如现 ... -
【java】jfreechart退出图标程序继续
2014-11-24 11:34 766做一个窗体,然后调用jfreechart进行图标显示。 当关闭 ... -
【java】改写js百度地图测距方法
2014-08-08 11:41 1525百度地图测距js代码: var EARTHRADIUS = 6 ... -
【web service】使用cxf对客户端进行开发工作
2014-07-16 10:04 8931,在eclipse中建立一个java项目,为客户端调用web ... -
【java】图片传输方案
2014-05-04 09:59 4535之前做的web service 涉及到一些基础的传输,如基本类 ... -
【java】调用微软语音系统读取文本
2014-05-04 09:52 2356先期准备工作: 安装微软speechsdk51,下载j ... -
【java】试用讯飞SDK开发语音tts初步代码
2014-04-22 16:41 7160tts开发对中文并不很支 ... -
【java】字符串的压缩转码base64
2012-09-11 09:13 10538由于客户端与服务端之间采用web service的方式进行传输 ... -
【java】使用jna调用delphi编译dll总结
2012-09-04 11:29 1146调用dll中,可以的入参为pchar。返回的参数为pwidec ... -
【机器环境】java语言环境不同会出现莫名其妙的问题
2012-09-01 10:49 981有这么一个功能: 模块是这样做的,因为做的是底层。 首先上层使 ... -
【java】试用JNA调用Delphi的dll方法。
2012-08-30 11:04 5070参考文章:http://hi.baidu.com/zuchan ... -
【接口开发】一个底层业务的很麻烦的接口开发
2012-08-29 14:53 942接口框架采用cxf,然后查询使用hibernate+sql的方 ... -
【java多线程】昨天的一个面试题目
2012-08-09 10:24 1030设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次 ... -
【一个笔试题目】java按字节进行截断
2012-08-08 22:21 1507不可否认,这是一个蛋疼的笔试题: 编程:编写一个截取字符串的函 ... -
【java】判断一个数是不是2的N次方
2012-08-01 19:10 9709第一种方法,对N进行循环除以2. public boolea ... -
java 加密。
2012-07-27 15:14 1032mark一下。 java下面的加密有三类,1,为sun自己的 ... -
【JAVA】加密解密(转http://www.wangchao.net.cn/bbsdetail_1742.html)
2012-03-05 11:42 1394package com.duduli.li; impor ...
相关推荐
项目中已使用的一个比较简单的SQL语句查询字段解析工具类
通过解析sql语句获取表血缘关系
SQL语句解析java包,含源代码: SELECT ANTIQUEOWNERS.OWNERLASTNAME, ANTIQUEOWNERS.OWNERFIRSTNAME FROM ANTIQUEOWNERS, ANTIQUES WHERE ANTIQUES.BUYERID = ANTIQUEOWNERS.OWNERID AND ANTIQUES.ITEM = 'Chair'; ...
用SQL语法,当然只能用简单的条件查询咯,不过这个用起比较简单,容易上手
Apache的java解析sql工具包,实现java对sql语句 的解析
NULL 博文链接:https://zhoualine.iteye.com/blog/1190914
基于Druid的SqlParser模块解析create table语句创建java POJO和DAO类的效率工具
JSqlParser是一个用Java编写的开源SQL解析库,它可以解析SQL语句并生成抽象语法树(AST),也可以根据...使用JSqlParser,你可以解析诸如SELECT、INSERT、UPDATE、DELETE等各种SQL语句,并对其内容进行详细的控制和操作。
Flora SQL解析器 将简单SQL语句解析为抽象语法树(AST),然后将其转换回SQL。用法为SQL语句创建AST const { Parser } = require ( 'flora-sql-parser' ) ;const parser = new Parser ( ) ;const ast = parser . ...
jsqlparser解析复杂sql 获取where条件字段 select字段 表名table 查询join 查询 group by 查询order by 子查询 判断是否为多级子查询
walminer功能介绍(wal2sql为walminer的基本功能,可以将wal日志解析为SQL语句,以及其undo语句,可解析部分DDL语句。fosync为在wal2sql的基础上实现的,PG故障转移延迟数据同步功能。pgto为PG的CDC工具,库外解析;...
一个自己开发的dbms系统,实现自己的sql语句编译解析
基于 Antlr4 的 Hive SQL 解析.zip 大学生课程设计 课程设计 自己大二写的课程设计
JSqlParser 在此处查找更多信息和示例: : 。执照JSqlParser具有LGPL V2.1或Apache软件许可2.0版的双重许可。...JSqlParser JSqlParser是一个SQL语句解析器。 它将SQL转换为Java类的可遍历层次结构。 JSqlParser不
根据MyBatis或iBatis的SQLMapper文件解析生成数据库表,通常是指通过解析MyBatis或iBatis的SQLMapper文件中的SQL语句,然后根据这些SQL语句来生成对应的数据库表结构。这样的需求可能源于需要将已有的SQLMapper文件...
的JSqlParser 在此处查找更多信息和示例: : 。 执照 JSqlParser具有LGPL V2.1或Apache软件许可2.0版的双重许可。 讨论 ... 看起来很不错,具有扩展SQL语法(如PL / SQL和T-SQL)和Java + .NET AP
使用antlr规则引擎解析sql成对象.里面只有查询语句,但是也预留了update,delete,insert等语句的接口.可以非常方便的扩展
java如何获得数据库表中各字段的字段名
java版excel解析,并上传至mysql数据库。已包含jar包,数据库sql语句等,eclipse直接运行client.java