当前使用版本(必填,否则不予处理)
mybatis-plus-boot-starter 原版本: 3.0.5 现版本: 3.4.1
该问题是如何引起的?(确定最新版也有问题再提!!!)
NormalSegmentList commitid ac4625b291fb799603a1d32bfa7c7dbad3382716
重现步骤(如果有就写完整)
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
- 这个问题是在我们升级mybatis plus 版本后发现的,我不确定这是否可以算的上是一个issue, 因为apply的sql 比较奇怪。
- 可以解释一下为什么要拼接一下
()吗,因为在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