当前使用版本(必填,否则不予处理)

mybatis-plus-boot-starter 原版本: 3.0.5 现版本: 3.4.1

该问题是如何引起的?(确定最新版也有问题再提!!!)

NormalSegmentList commitid ac4625b291fb799603a1d32bfa7c7dbad3382716 MyBatis-Plus QueryWrapper.apply 版本变更发生错误

重现步骤(如果有就写完整)

        QueryWrapper<A> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id",1)
                .eq("deleted", 0);
        queryWrapper.apply(" 1=1 order by id desc limit 1");
        ADO a = ADAO.selectOne(queryWrapper);

报错信息

解析后的sql

### SQL: SELECT  id   FROM    a     WHERE (id= ? AND deleted = ? AND  1=1 order by id desc limit 1)
###  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order by id desc limit 1)' at line 3
  1. 这个问题是在我们升级mybatis plus 版本后发现的,我不确定这是否可以算的上是一个issue, 因为apply的sql 比较奇怪。
  2. 可以解释一下为什么要拼接一下()吗,因为在3.0.5上没有拼接的时候是可以正常使用的。

Comment From: miemieYaho

有人不正常才修成那样的

Comment From: ilumer

那这里的情况是不是一个issue,后续是否需要改进

Comment From: miemieYaho

不是,order by 你就用 orderByDesc("id") ,limit 就用 last("limit 1"),你这乱用我们不负责

Comment From: ilumer

apply的文档上可以给予更多的说明,因为现在的文档给人的感觉更像是sql的拼接,实际上是不能拼接包含having,order by,limit