mybatis复杂查询需加注解@SqlParser(filter = true)

文章描述了在使用Mybatis进行查询时,与MySQL配合出现错误,具体表现为MybatisPlusException,指出SQL解析问题,涉及GROUPBY子句可能导致的解析错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql查询不报错,用mybatis就报错

 

com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, please exclude the tableName or statementId.
 Error SQL: SELECT
            atnu.user_id,
            SUM(
            IF
            ( atnu.`status` = 1, TIMESTAMPDIFF( MINUTE, atnu.progress_time, NOW()), 0 )) progress_time,
            SUM(
            IF
            ( atnu.`status` = 2, TIMESTAMPDIFF( MINUTE, atnu.progress_time, atnu.apprv_time ), 0 )) finish_time,
            COUNT(
            DISTINCT
            IF
            ( atnu.`status` = 1, tat.id, NULL )) progress_count,
            COUNT(
            DISTINCT
            IF
            ( atnu.`status` = 2, tat.id, NULL )) finish_count
        FROM
            t_task tat
            LEFT JOIN t_task_node atn ON atn.task_id = tat.id
            LEFT JOIN t_task_node_user atnu ON atnu.node_id = atn.id
        WHERE
             
        tat.deleted = 0
        AND atn.node_type = 1
         
            AND tat.apply_type = ?
         
        AND tat.`status` = 2
        AND atnu.`status` IN ( 1, 2 )
        GROUP BY
            atnu.user_id
    at com.baomidou.mybatisplus.core.toolkit.ExceptionUtils.mpe(ExceptionUtils.java:39)
    at com.baomidou.mybatisplus.core.parser.AbstractJsqlParser.parser(AbstractJsqlParser.java:74)
    at com.baomidou.mybatisplus.extension.handlers.AbstractSqlParserHandler.sqlParser(AbstractSqlParserHandler.java:76)
    at com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor.intercept(PaginationInterceptor.java:146)
    at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
    at com.sun.proxy.$Proxy285.prepare(Unknown Source)
    at com.baomidou.mybatisplus.core.executor.MybatisSimpleExecutor.prepareStatement(MybatisSimpleExecutor.java:94)
    at com.baomidou.mybatisplus.core.executor.MybatisSimpleExecutor.doQuery(MybatisSimpleExecutor.java:66)
    at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324)
    at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
    ... 121 common frames omitted
Caused by: net.sf.jsqlparser.JSQLParserException: null
    at net.sf.jsqlparser.parser.CCJSqlParserUtil.parseStatements(CCJSqlParserUtil.java:154)
    at com.baomidou.mybatisplus.core.parser.AbstractJsqlParser.parser(AbstractJsqlParser.java:60)
    ... 132 common frames omitted
Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "(" "("
    at line 3, column 16.

Was expecting one of:

    "&"
    ","
    "."
    "::"
    ";"
    "<<"
    ">>"
    "ACTION"
    "ANY"
    "AS"
    "CASCADE"
    "CAST"
    "COLUMN"
    "COMMIT"
    "CONNECT"
    "DO"
    "ENABLE"
    "END"
    "EXCEPT"
    "EXTRACT"
    "FIRST"
    "FOLLOWING"
    "FOR"
    "FROM"
    "GROUP"
    "HAVING"
    "INDEX"
    "INSERT"
    "INTERSECT"
    "INTO"
    "KEY"
    "LAST"
    "MATERIALIZED"
    "MINUS"
    "NO"
    "NULLS"
    "OPEN"
    "ORDER"
    "OVER"
    "PARTITION"
    "PERCENT"
    "PRECISION"
    "PRIMARY"
    "PRIOR"
    "RANGE"
    "REPLACE"
    "ROW"
    "ROWS"
    "SEPARATOR"
    "SIBLINGS"
    "START"
    "TABLE"
    "TEMP"
    "TEMPORARY"
    "TRUNCATE"
    "UNION"
    "UNSIGNED"
    "VALUE"
    "VALUES"
    "WHERE"
    "XML"
    "^"
    "|"
    <EOF>
    <K_DATETIMELITERAL>
    <S_CHAR_LITERAL>
    <S_IDENTIFIER>
    <S_QUOTED_IDENTIFIER>

    at net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:18047)
    at net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:17900)
    at net.sf.jsqlparser.parser.CCJSqlParser.Statements(CCJSqlParser.java:293)
    at net.sf.jsqlparser.parser.CCJSqlParserUtil.parseStatements(CCJSqlParserUtil.java:152)
    ... 133 common frames omitted

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值