今天在写接口时偶然发现的一个问题,当前端将sql语句中的order by后面的排序条件作为参数传过来后,拼接到sql语句中执行,发现排序并没有生效
可以看到pkno作为排序条件降序时,查询的结果依旧是升序
查询资料最终发现是因为在使用#{}传参数时,因为会防止sql注入问题,会先编译sql语句,后续传参时会在参数两边加引号,所以导致最终执行的排序时是order by 'xxx DESC',导致排序失效,这里我们可以将#{}替换为${},因为我们这边的参数是前端写好传过来的,不会发生sql注入的安全问题,所以可以使用的${}
最后查询结果就正常了