当前使用版本

3.4.2 MySQL 5.7

该问题是如何引起的?

分页请求查询时, 若SQL语句WHERE条件为 WHERE MATCH(xxx) AGAINST(xxx), 则弹出此警告

重现步骤

分页请求查询, SQL语句WHERE条件为 WHERE MATCH(xxx) AGAINST(xxx)

@Select("SELECT t1.* FROM t1 WHERE MATCH(t1.`keyword`) AGAINST(#{keyword}))
IPage<SomeClass> findByKeyword(String keyword, Integer sId, Page<SomeClass> page);

报错信息

optimize this sql to a count sql has exception, sql:"SELECT t1.* FROM t1 WHERE MATCH(t1.`keyword`) AGAINST(?)", exception:
net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "MATCH" "MATCH"

Was expecting one of:

    "!"
    "("
    "NOT"

Comment From: totoro52

跟我遇到的问题差不多,主要还是JSqlParser问题,目前还没找到解决方法,要么建视图要么储存过程,但这两样能不用就不用,我的解决方法是用代码去实现。

Comment From: aboutZZ

跟我遇到的问题差不多,主要还是JSqlParser问题,目前还没找到解决方法,要么建视图要么储存过程,但这两样能不用就不用,我的解决方法是用代码去实现。

我手动去count总条数了

Comment From: totoro52

跟我遇到的问题差不多,主要还是JSqlParser问题,目前还没找到解决方法,要么建视图要么储存过程,但这两样能不用就不用,我的解决方法是用代码去实现。

我手动去count总条数了

关闭issues吧 JSqlParser那边很多个issues了 但是都没有处理 应该是不会支持这些复杂的函数嵌套SQL语句了