ibatis动态字段order by排序

ibatis中要增加一个排序功能

按照惯性思维增加了这样的代码


    order by #orderColumn#

运行起来不符合预期

检查了生成了原始语句,发现组装成的SQL变成了 

order by 'name'

在orderColumn参数前后加上了引号,所以会不成功

最终解决方法如下


    order by $orderColumn$

然后显式的在DO中对orderColumn属性值进行筛选,避免引入注入漏洞,即

public void setOrderColumn(String orderColumn){
    if("id".equals("orderColumn") || ...){
        this.orderColumn = orderBy;
    }else{
        this.orderColumn = null;
    }
}

你可能感兴趣的:(ibatis动态字段order by排序)