mybatis中动态排序失效
应用场景:
在应用程序中需要根据表头设置数据的排序字段与规则。
问题:
将排序字段与排序规则以参数的形式动态传入了mybatis的xml中,然而实际运行结果仍然是默认字段升序的查询结果。
原因:
为了预防SQL注入问题,在xml文件中接收动态参数采用的是#{参数名}的方式,基于mybatis的预编译,排序字段会编译为"参数名",从而导致动态排序失效
例如:
期望结果:order by transAmount desc
实际结果:order by "transAmount" "desc"
此时查询结果排序失效
解决办法:
由于本人使用过程中,排序字段是在代码中获取,不存在SQL注入的风险,因此修改xml文件中接受参数的方式即可
order by ${sortField} ${sortOrder}
版权声明:本文为m_sophia原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。