mybatis中动态排序失效
应用场景:
在应用程序中需要根据表头设置数据的排序字段与规则。

问题:
将排序字段与排序规则以参数的形式动态传入了mybatis的xml中,然而实际运行结果仍然是默认字段升序的查询结果。

原因:
为了预防SQL注入问题,在xml文件中接收动态参数采用的是#{参数名}的方式,基于mybatis的预编译,排序字段会编译为"参数名",从而导致动态排序失效
例如:
期望结果:order by transAmount desc
实际结果:order by "transAmount" "desc"
此时查询结果排序失效

解决办法:
由于本人使用过程中,排序字段是在代码中获取,不存在SQL注入的风险,因此修改xml文件中接受参数的方式即可
order by ${sortField} ${sortOrder}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐