JsqlParser插件用来对于SQL语句进行解析和组装,将SQL语句关键词之间的内容用List<String>进行保存,同时可以进行更改List<String>的内容后重新组装成一个新的SQL语句。项目中的需求多用于更改SQL中table name。(其实感觉用正则会更好一点) JsqlParser其实就是将sql语句各个关键词用Java类的形式进行了对应解析,包括很多函数可以让我们得到各个部分的内容
熟悉了Jsql插件的一些基本使用情况以后,发现还有一些不足,目前把这几天写的东西放上来了。解决一些这样的问题:
1.给定的SQL语句是否满足基本语法问题?——我尝试将String转化为statement将Jsql的异常信息保存,并提取有效信息,返回错误单词+位置信息
2.insert语句批量插入数据的修改————正则匹配values并保存到List<List<Stirng>>中,replace函数替换原来SQL完成重新组装。
后面给出具体解决方法,并总结了一些知识。
1.Jsql异常信息的抛出以及正则匹配的知识
// 获取sql语句中的所有表名
// 可以获取任意类型sql语句的全部表名,这里使用的select sql
// **********传入String 得到List<String>,嵌套已测试
public static List<String> test_select_table(String sql)
throws JSQLParserException {
Statement statement = (Statement) CCJSqlParserUtil.parse(sql);
Select selectStatement = (Select) statement;
TablesNamesFinder tablesNamesFinder = new TablesNamesFinder();
List<String> tableList = tablesNamesFinder
.getTableList(selectStatement);
return tableList;
}
/