首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏bisal的个人杂货铺

    JSQLParser碰到的问题

    JSQLParser是github上一个开源的项目,专门解析SQL,可以轻松地得到一条SQL的列、表、条件等对象, P.S. https://github.com/JSQLParser/JSqlParser 最近在做一个功能开发的时候,被他困扰了下,从需求来讲,就是利用正则,先将多行的SQL改成一行,然后通过JSQLParser解析SQL,但是在这过程中,碰到了很多问题。

    1.9K10发布于 2021-09-26
  • 来自专栏笔记2022

    基于JSQLPARSER进行SQL解析的知识入门

    进行SQL解析 import net.sf.jsqlparser.JSQLParserException; import net.sf.jsqlparser.expression.Expression; ; import net.sf.jsqlparser.parser.CCJSqlParserUtil; import net.sf.jsqlparser.schema.Column; import net.sf.jsqlparser.schema.Table ; import net.sf.jsqlparser.statement.delete.Delete; import net.sf.jsqlparser.statement.insert.Insert; import net.sf.jsqlparser.statement.select.*; import net.sf.jsqlparser.statement.update.Update; import net.sf.jsqlparser.statement.values.ValuesStatement; import net.sf.jsqlparser.util.TablesNamesFinder;

    11.4K20编辑于 2022-06-17
  • 来自专栏朱永胜的私房菜

    SpringBoot项目:net.sf.jsqlparser.parser.ParseException: Encountered unexpected token:XXXXX

    最近开发过程中,在where条件中使用IF函数,在MySQL数据库中,使用Navicat运行没有问题,但是运行项目的时候,死活过不去,一直报错,后来一番折腾找到了解决方案,所以,以防后续再出现类似问题,仅做记录!

    2.1K40编辑于 2023-08-21
  • 来自专栏Java架构师必看

    SpringBoot项目:net.sf.jsqlparser.parser.ParseException: Encountered unexpected token:XXXXX

      最近开发过程中,在where条件中使用IF函数,在MySQL数据库中,使用Navicat运行没有问题,但是运行项目的时候,死活过不去,一直报错,后来一番折腾找到了解决方案,所以,以防后续再出现类似问题,仅做记录!

    4.4K20发布于 2021-03-22
  • 来自专栏10km的专栏

    jsqlparser:实现基于SQL语法分析的SQL注入攻击检查

    最近学习了jsqlparser,我知道我找到了更好的办法来解决SQL注入攻击检查问题。 jsqlparser是一个java的SQL语句解析器,在上一篇博客:《jsqlparser:基于抽象语法树(AST)遍历SQL语句的语法元素》介绍了如何通过jsqlparser来遍历SQL语句中所有的字段和表名引用 ; import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.Function; import ; import net.sf.jsqlparser.statement.select.SubSelect; import net.sf.jsqlparser.statement.select.WithItem ; import net.sf.jsqlparser.parser.SimpleNode; import net.sf.jsqlparser.statement.select.UnionOp; /**

    3.7K20编辑于 2022-11-16
  • 来自专栏10km的专栏

    jsqlparser:基于抽象语法树(AST)遍历SQL语句的语法元素

    jsqlparser是一个java的SQL语句解析器,基于它可以实现很多之前无法完成的工作。 <! -- maven 依赖库引用 --> <dependency> <groupId>com.github.jsqlparser</groupId> <artifactId>jsqlparser</artifactId> <version>4.5</version> </dependency 比如如下的SQL语句 birthdate" > '1980-01-01' 对于一个SQL语句如何能根据数据库的要求为字段名和表名自动加引号或双引号,就需要用到jsqlparser这个利器。 “birthdat” > ‘1980-01-01’ 从上面最后一行输出可以看到,jsqlparser已经精确的将SQL语句中所有表名和字段名都自动加了双引号。

    3.1K30编辑于 2022-11-06
  • 巧用 MyBatis Plus 实现数据权限控制

    *;import net.sf.jsqlparser.expression.Expression;import net.sf.jsqlparser.statement.select.PlainSelect ;import net.sf.jsqlparser.statement.select.Select;import net.sf.jsqlparser.statement.select.SelectBody ;import net.sf.jsqlparser.expression.Expression;import net.sf.jsqlparser.expression.HexValue;import net.sf.jsqlparser.expression.StringValue ;import net.sf.jsqlparser.expression.operators.relational.ItemsList;import net.sf.jsqlparser.schema.Column ;import net.sf.jsqlparser.expression.Expression;import net.sf.jsqlparser.expression.HexValue;import net.sf.jsqlparser.expression.StringValue

    1.4K00编辑于 2024-04-24
  • 来自专栏程序猿DD

    Java中如何解析、格式化、生成SQL语句?

    JSqlParser JSqlParser是一个用Java编写的SQL解析器,可以将SQL语句解析为Java对象,从而使开发人员能够轻松地分析、修改和重构SQL查询。  Text   └─Statements: net.sf.jsqlparser.statement.select.Select      └─selectBody: net.sf.jsqlparser.statement.select.PlainSelect 除了解析SQL语句外,JSqlParser还提供了一些有用的功能,例如格式化SQL语句、生成SQL查询等。 此外,JSqlParser还可以与其他Java库和框架集成,例如Hibernate、Spring等。 项目地址:https://github.com/JSQLParser/JSqlParser 往期推荐 一款针对 jar 和 vue 的轻量级自动化部署工具 比 Navicat 更好用的数据库管理工具

    1.3K50编辑于 2023-04-24
  • 来自专栏用户9379187的专栏

    Java中如何解析SQL语句、格式化SQL语句、生成SQL语句?

    └─selectBody: net.sf.jsqlparser.statement.select.PlainSelect ├─selectItems -> Collection< SelectExpressionItem> │ └─selectItems: net.sf.jsqlparser.statement.select.SelectExpressionItem (Column) equalsTo.getLeftExpression(); Column b = (Column) equalsTo.getRightExpression();}复制代码目前,JSqlParser 除了解析SQL语句外,JSqlParser还提供了一些有用的功能,例如格式化SQL语句、生成SQL查询等。 此外,JSqlParser还可以与其他Java库和框架集成,例如Hibernate、Spring等。

    5.4K10编辑于 2023-03-10
  • 来自专栏凯哥Java

    实战!MyBatis Plus助你一键搞定数据权限控制!

    ;import net.sf.jsqlparser.statement.select.PlainSelect;import net.sf.jsqlparser.statement.select.Select ;import net.sf.jsqlparser.statement.select.SelectBody;import net.sf.jsqlparser.statement.select.SetOperationList ;import net.sf.jsqlparser.expression.HexValue;import net.sf.jsqlparser.expression.operators.relational.EqualsTo ;import net.sf.jsqlparser.schema.Column;import net.sf.jsqlparser.schema.Table;import net.sf.jsqlparser.statement.select.PlainSelect *;import net.sf.jsqlparser.schema.Column;import net.sf.jsqlparser.schema.Table;import net.sf.jsqlparser.statement.select.PlainSelect

    1.5K10编辑于 2024-11-17
  • 来自专栏知无不言 - 畅所欲言

    Mybatis plus 动态表名插件开发

    com.rookie.mybatis.study.entity.DynamicTableInfo;import com.rookie.mybatis.study.entity.DynamicTableName;import net.sf.jsqlparser.parser.CCJSqlParserUtil ;import net.sf.jsqlparser.schema.Table;import net.sf.jsqlparser.statement.Statement;import net.sf.jsqlparser.statement.delete.Delete ;import net.sf.jsqlparser.statement.insert.Insert;import net.sf.jsqlparser.statement.select.Join;import net.sf.jsqlparser.statement.select.PlainSelect;import net.sf.jsqlparser.statement.select.Select;import net.sf.jsqlparser.statement.update.Update;import org.apache.commons.lang3.ObjectUtils;import org.apache.commons.lang3

    64420编辑于 2023-11-20
  • 如何用 Java 校验 SQL 语句的合法性?

    方案二:使用 JSqlParser 这个 Java 库如果你不希望实际执行 SQL 语句,而只是想校验 SQL 语句的合法性,可以使用 JSqlParser 这个 Java 库。 以下是一个简单的示例代码:typescript 代码解读复制代码import net.sf.jsqlparser.JSQLParserException;import net.sf.jsqlparser.parser.CCJSqlParserUtil ;import net.sf.jsqlparser.statement.Statement; public class SQLValidator { public static boolean 需要注意的是,JSqlParser 库只能检查 SQL 语句的语法是否合法,而无法检查 SQL 语句的语义是否合法。因此,同样需要进行严格的输入校验和过滤,避免 SQL 注入攻击。 总结总的来说,使用 JDBC API 和 JSqlParser 库、正则表达式、ANTLR 解析器生成器或 Apache Calcite 库都可以实现校验 SQL 语句的合法性。

    64510编辑于 2025-01-17
  • Shiro实现多级权限的分页查询

    com.baomidou.mybatisplus.core.toolkit.PluginUtils; import com.baomidou.mybatisplus.extension.handlers.AbstractSqlParserHandler; import net.sf.jsqlparser.JSQLParserException ; import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.StringValue; import net.sf.jsqlparser.expression.operators.conditional.AndExpression; import net.sf.jsqlparser.parser.CCJSqlParserUtil ; import net.sf.jsqlparser.statement.select.PlainSelect; import net.sf.jsqlparser.statement.select.Select

    21700编辑于 2025-07-22
  • 来自专栏快乐阿超

    回收站拦截器

    .* import net.sf.jsqlparser.expression.Function import net.sf.jsqlparser.expression.operators.conditional.AndExpression import net.sf.jsqlparser.expression.operators.conditional.OrExpression import net.sf.jsqlparser.expression.operators.relational .* import net.sf.jsqlparser.schema.Column import net.sf.jsqlparser.schema.Table import net.sf.jsqlparser.statement.Statement import net.sf.jsqlparser.statement.delete.Delete import net.sf.jsqlparser.statement.insert.Insert import net.sf.jsqlparser.statement.select.* import net.sf.jsqlparser.statement.update.Update import org.apache.ibatis.executor.Executor

    1.5K30编辑于 2022-10-27
  • 来自专栏全栈程序员必看

    Mybatis分页插件-PageHelper的使用

    pagehelper/pagehelper/ http://repo1.maven.org/maven2/com/github/pagehelper/pagehelper/ 由于使用了sql解析工具,你还需要下载jsqlparser.jar 4.1.0及以后版本需要0.9.4版本 http://repo1.maven.org/maven2/com/github/jsqlparser/jsqlparser/0.9.4/ 4.1.0以前版本需要 0.9.1版本 http://repo1.maven.org/maven2/com/github/jsqlparser/jsqlparser/0.9.1/ 一、首先,在spring-mybatis.xml

    1K30编辑于 2022-08-31
  • 来自专栏快乐阿超

    h2下update set字段重复处理拦截器

    com.baomidou.mybatisplus.core.toolkit.PluginUtils; import com.baomidou.mybatisplus.extension.parser.JsqlParserSupport; import net.sf.jsqlparser.schema.Column ; import net.sf.jsqlparser.statement.update.Update; import net.sf.jsqlparser.statement.update.UpdateSet } } } } } 解决思路本来是打算set实体类里的属性为null,但是没生效,因为已经生成sql和占位符了 最后: 将sql使用jsqlparser

    64720编辑于 2022-09-28
  • 来自专栏mybatis源码分析

    mybatis拦截器源码分析

    这个工具进行处理.这里为了简单,就不结合拦截器来进行编码直接使用测试类来展示jsqlparser的使用方法和功能首先引入jsqlparser依赖<dependency> <groupId >com.github.jsqlparser</groupId> <artifactId>jsqlparser</artifactId> <version>3.1 ;import net.sf.jsqlparser.expression.LongValue;import net.sf.jsqlparser.expression.operators.relational.ExpressionList ;import net.sf.jsqlparser.parser.CCJSqlParserManager;import net.sf.jsqlparser.schema.Column;import net.sf.jsqlparser.schema.Table ;import net.sf.jsqlparser.statement.insert.Insert;import net.sf.jsqlparser.statement.update.Update;import

    41810编辑于 2024-01-22
  • 来自专栏A周立SpringCloud

    MySQL建表语句转PostgreSQL建表语句全纪录

    而且之前研读Mybatis通用Mapper源码时,知道Java世界里有个 jsqlparser 的工具。 花了10分钟简单了解了下 jsqlparser 后,就开撸开发工具了……花了20分钟,初版写完了,然后和该项目的同事又花了20分钟验证了下,最终确定了如下的版本。 代码贴出来: 加依赖: <dependency> <groupId>com.github.jsqlparser</groupId> <artifactId>jsqlparser</artifactId %s IS %s", table, column, commentValue); } } 如代码所示,目前是借助 jsqlparser 的SQL解析能力配合字符串替换的方式生成PostgreSQL

    4.1K20发布于 2019-07-10
  • 来自专栏波波烤鸭

    好好编程-物流项目01【搭建maven工程】

    >0.9.1</jsqlparser.version> <commons-fileupload.version>1.3.1</commons-fileupload.version> <jedis.version <version>${pagehelper.version}</version> </dependency> <dependency> <groupId>com.github.jsqlparser </groupId> <artifactId>jsqlparser</artifactId> <version>${jsqlparser.version}</version> </ </groupId> <artifactId>pagehelper</artifactId> </dependency> <dependency> <groupId>com.github.jsqlparser </groupId> <artifactId>jsqlparser</artifactId> </dependency> <!

    63950发布于 2019-04-02
  • 来自专栏码农那些事!!!

    聊聊 SaaS 多租户系统数据隔离实现方案

    通过上面我们知道了这个多租户插件其实就是通过解析SQL,然后进行拼接多租户id过滤条件来实现SQL增强从而做到数据隔离,解析SQL的框架叫:JSqlParser,官方文档:https://github.com /JSQLParser/JSqlParser/wiki,之前我总结过一篇关于 Druid解析动态SQL。 Druid也可以解析SQL,我们都知道SQL语句会生成语法树,两者对SQL解析的孰强孰弱(特别是复杂SQL)不得而知,可以自行验证对比,我这里给出一个JSqlParser解析出错的情况,把上面的SQL语句 我在mybatis-plus的官方提了一个issue:https://github.com/baomidou/mybatis-plus/issues/5086,也得到官方维护者的迅速回应说是JSqlParser 解析的问题,不是mybatis-plus的问题~~~,给出的建议就是把别名ur改成别的,或者升级到JSqlParser的最新版本。

    3.5K30编辑于 2023-08-10
领券