jsqparser版本太底不能解析@符号

Blade 未结 2 1826
ivan_lee
ivan_lee 剑圣 2019-09-02 18:10

一、该问题的重现步骤是什么?

1. mybatis自定义查询中使用变量时,@符号不能被jsqparser解析,

其原因是因为项目中使用的jsqparser1.2版本太低,至少在1.4就可以支持该符号的解析。


二、你期待的结果是什么?实际看到的又是什么?

该符号在mysql查询排名问题时会经常使用到。

自己偿试升级该jar,但未能找到其具体引入位置,从而未能解决问题


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

bladeX2.0.6


四、请提供详细的错误堆栈信息,这很重要。


image.png

五、若有更多详细信息,请在下面提供。



2条回答
  • 2019-09-02 22:02

    升级mybatis-plus到3.2.0,bladex下个版本会更新

    作者追问:2019-09-03 10:30

    3.2.0版本没有了此效率插件

    image.png

    其中的租户 handler中的方法变了,

    image.png


    如果升级不要这个插件和改写这个handler实现 ,会不会对目前有什么影响?

    作者追问:2019-09-03 14:30

    您好,我升级为3.2.0后,发现仍然不可解析,发现

    mybatis-plus

    github上有issues解释不支持方言解析,需要添加例外

    image.png

    回答: 2019-09-03 14:40

    看bladex-tool最新的dev分支

    作者追问:2019-09-03 14:42

    在排序查询中,出现了@、:等符号时,不能被解析

    查询如下:

    SET @rownum = 0;
    SELECT  @rownum:= @rownum+1 AS classRank,
    s.user_id AS userId,
    l.title AS examName,
    l.subject AS subjectId,
    s.score
    FROM `jza_teaching_score` s
    LEFT JOIN `jza_teaching_score_des` l ON s.log_id = l.id
    WHERE s.is_deleted = 0 AND s.log_id = idORDER BY s.score DESC


    0 讨论(0)
  • 2019-09-03 16:06

    最终解决方法:

    在对应方法上加注解:

    @SqlParser(filter = true)


    0 讨论(0)
提交回复