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

3.4.3.4

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

最新版代码依然如此 wrapper.orderByAsc("case when col1>1 then col2 else col3 end"); order by不一定是字段可能是表达式或函数(例如:PG中的ST_GeomFromText('LINESTRING(-71.160281 42.258729,-71.160837 42.259113,-71.161144 42.25932)')),甚至部分数据库支持空格(oracle中加引号可以带空格,例如"column name")

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

如上

报错信息

替换掉空格导致语法错误

Comment From: idlesysman

@qmdx https://github.com/baomidou/mybatis-plus/commit/5e6b1f4f35a4ec4a0f1db27031acadfb48bc5757 这个提交导致的

Comment From: idlesysman

😓看来这个bug不好解决

Comment From: qmdx

升级版本 3.5.1 应该就可以了

Comment From: idlesysman

测试了3.5.1,还是不行的.仍然会替换掉空格

Comment From: idlesysman

还是先用3.4.3.4顶住

Comment From: qmdx

wrapper.orderByAsc("case when col1>1 then col2 else col3 end"); 这属于 sql 注入了,是因为你出现了 when then 这种 注入 sql 片段, 你这段代码放在 .last("这里试试")

Comment From: idlesysman

last报错解析错误(pg的gis查询语法:(location<-> ST_GeomFromText('POINT(123 456)', 4326)) )。 我改xml文件了,谢谢