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

3.5.3.1

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

从3.5.2升级到3.5.3.1后引发。

    @Test
    public void orderByField() {
        QueryWrapper<SomeOrder> queryWrapper = new QueryWrapper<>();
        queryWrapper.orderByAsc("field(status,'SUCCESS','FAILED','CLOSED')");
        queryWrapper.last("limit 10");
        System.out.println(queryWrapper.getCustomSqlSegment());
    }

output: ORDER BY field(status,SUCCESS,FAILED,CLOSED) ASC limit 10 expect: ORDER BY field(status,'SUCCESS','FAILED','CLOSED') ASC limit 10

报错信息

执行查询时,最终将应该为字符串的值识别为列名而报错

Comment From: timnick-snow

原因时 StringUtils.sqlInjectionReplaceBlank 中去除了单引号。 REPLACE_BLANK 正则在某次提交中变化了导致的

Comment From: Bin1993

根本原因是SqlInjectionUtils错误地判断了order by的字段里有/*注释字符,我修改了正则表达式,已提PR

Comment From: Bin1993

@qmdx 苗子哥看下