@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)。
官网的介绍即是该中间件的全部,虽然介绍很短,但是其功能着实强悍。