@Test
public
void
buildSelectSql
(
)
throws
JSQLParserException
{
Select select01
=
SelectUtils
.
buildSelectFromTable
(
new
Table
(
"test"
)
)
;
System
.
err
.
println
(
select01
.
getSelectBody
(
)
.
toString
(
)
)
;
Select select02
=
SelectUtils
.
buildSelectFromTableAndExpressions
(
new
Table
(
"test"
)
,
new
Column
(
"col1"
)
,
new
Column
(
"col2"
)
)
;
System
.
err
.
println
(
select02
.
getSelectBody
(
)
.
toString
(
)
)
;
Select select03
=
SelectUtils
.
buildSelectFromTableAndExpressions
(
new
Table
(
"mytable"
)
,
"col1"
,
"col2"
)
;
System
.
err
.
println
(
select03
.
getSelectBody
(
)
.
toString
(
)
)
;
* 构建插入语句
@Test
public
void
buildInsertSql
(
)
{
Table table
=
new
Table
(
)
;
table
.
setName
(
"table"
)
;
Insert insert
=
new
Insert
(
)
;
insert
.
setTable
(
table
)
;
List
<
Column
>
columnList
=
Arrays
.
asList
(
new
Column
(
"col01"
)
,
new
Column
(
"col02"
)
)
;
insert
.
setColumns
(
columnList
)
;
MultiExpressionList multiExpressionList
=
new
MultiExpressionList
(
)
;
multiExpressionList
.
addExpressionList
(
Arrays
.
asList
(
new
StringValue
(
"1"
)
,
new
StringValue
(
"2"
)
)
)
;
insert
.
setItemsList
(
multiExpressionList
)
;
System
.
err
.
println
(
insert
)
;
* 构建更新语句
@Test
public
void
buildUpdateSql
(
)
{
Table table
=
new
Table
(
)
;
table
.
setName
(
"table"
)
;
Update update
=
new
Update
(
)
;
update
.
setTable
(
table
)
;
List
<
Column
>
columnList
=
Arrays
.
asList
(
new
Column
(
"col01"
)
,
new
Column
(
"col02"
)
)
;
update
.
setColumns
(
columnList
)
;
update
.
setExpressions
(
Arrays
.
asList
(
new
StringValue
(
"1"
)
,
new
StringValue
(
"2"
)
)
)
;
EqualsTo equalsTo
=
new
EqualsTo
(
)
;
equalsTo
.
setLeftExpression
(
new
Column
(
table
,
"user_id"
)
)
;
equalsTo
.
setRightExpression
(
new
StringValue
(
"123456"
)
)
;
update
.
setWhere
(
equalsTo
)
;
* 构建删除语句
@Test
public
void
buildDeleteSql
(
)
{
Table table
=
new
Table
(
)
;
table
.
setName
(
"table"
)
;
Delete delete
=
new
Delete
(
)
;
delete
.
setTable
(
table
)
;
EqualsTo equalsTo
=
new
EqualsTo
(
)
;
equalsTo
.
setLeftExpression
(
new
Column
(
table
,
"user_id"
)
)
;
equalsTo
.
setRightExpression
(
new
StringValue
(
"123456"
)
)
;
delete
.
setWhere
(
equalsTo
)
;
System
.
err
.
println
(
delete
)
;
赠送jar包:
jsqlparser
-4.3.jar;
赠送原API文档:
jsqlparser
-4.3-
java
doc.jar;
赠送源代码:
jsqlparser
-4.3-sources.jar;
赠送Maven依赖信息文件:
jsqlparser
-4.3.pom;
包含翻译后的API文档:
jsqlparser
-4.3-
java
doc-API文档-中文(简体)版.zip;
Maven坐标:com.github.
jsqlparser
:
jsqlparser
:4.3;
标签:github、
jsqlparser
、jar包、
java
、中文文档;
使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。
人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
如果从
简单
的
SQL
语句中获取表名,那么可以通过不严谨的关键字匹配的方式获取或者正则表达式的方式获取表名。但是这种做法不具有通用性,遇到复杂的
SQL
语句就会存在BUG。严谨的做法当然是通过
SQL
分析工具分析
SQL
结构并获取
SQL
信息,
Jsqlparser
就是这样的工具,为我们的
SQL
分析提供了便利。下面通过一个
简单
的例子可以了解到
Jsqlparser
的实现机制,举一反三,更多的应用都是可以做到的。/...
赠送jar包:
jsqlparser
-1.4.jar;
赠送原API文档:
jsqlparser
-1.4-
java
doc.jar;
赠送源代码:
jsqlparser
-1.4-sources.jar;
赠送Maven依赖信息文件:
jsqlparser
-1.4.pom;
包含翻译后的API文档:
jsqlparser
-1.4-
java
doc-API文档-中文(简体)版.zip;
Maven坐标:com.github.
jsqlparser
:
jsqlparser
:1.4;
标签:github、
jsqlparser
、中文文档、jar包、
java
;
使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。
人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
JSqlParser
是一个
SQL
语句解析器,它可以把
SQL
转换为
Java
对象进行操作的工具包,支持Oracle,
Sql
Server,
MySQL
,Postgre
SQL
等常用
数据库
。
熟悉了J
sql
插件的一些基本使用情况以后,发现还有一些不足,目前把这几天写的东西放上来了。解决一些这样的问题:
1.给定的
SQL
语句是否满足基本语法问题?——我尝试将String转化为statement将J
sql
的异常信息保存,并提取有效信息,返回错误单词+位置信息
2.
insert
语句批量插入数据的修改————正则匹配values并保存到List>中,replace函数替换原来S
public void testSelectOneTable() throws
JSQLParser
Exception {
// 单表全量
Table table = new Table("test");
注:内容均以
java
实现
这件事情,起始我们可以通过
jsqlparser
这款良心工具来完成。但是拿人家的东西来用就没机会锻炼自己了,正好最近工作上碰到了这个问题,就顺便来写个日志记录下吧。
这里做一个前提假设:
sql
没有语法错误
虽然
sql
没有语法错误,但无法保证
sql
中带有注释符号,有的
sql
还带着很大的空行以及很长的空格。【我们公司的客服和老板都热爱能写
sql
,他们就是慢
sql
和不规范
sql
的缔造者,甚至一度引起公司内部服务器瘫痪,嘘!】
言归正传,先把
sql
按一个规则垂直分割,请围观
java
JSqlParser
是一个
SQL
语句解析器。它将
SQL
转换为
Java
类的可遍历层次结构。
支持Oracle,
Sql
Server,
MySQL
,Postgre
SQL
等常用
数据库
。但各种
数据库
系统的
SQL
语法都在动态变化,可以解析某些(不是全部)。
JSqlParser
就是一个把
SQL
转换为
JAVA
对象操作的工具包,但是发现此类文章较少,文档也不太详细,所以写个
系列
博客供参考。
GitHub地址
入门
案例
添加pom
<dependency>
1、 j
sql
parse介绍
J
Sql
Parse是一款很精简的
sql
解析工具,它可以将常用的
sql
文本解析成具有层级结构的“语法树”,我们可以针对解析后的“树节点(也即官网里说的有层次结构的
java
类)”进行处理进而生成符合我们要求的
sql
形式。
官网给的介绍很简洁:
JSqlParser
解析
SQL
语句并将其转换为
Java
类的层次结构。生成的层次结构可以使用访问者模式进行访问(官网地址:
JSqlParser
- Home)。
官网的介绍即是该中间件的全部,虽然介绍很短,但是其功能着实强悍。