美文网首页
Mybatis 动态排序遇到的坑

Mybatis 动态排序遇到的坑

作者: 就叫basi | 来源:发表于2019-10-09 13:12 被阅读0次

今天,我接到需求,要求是点击时间column,该列实现desc或者asc排序。
我这一想xml中加个动态order by不完了嘛😏😏😏

于是动手:

    <if test="order != null and order != '' and orderMethod != null and orderMethod != ''">
            order by #{order} #{orderMethod}
    </if>

重启服务,点击排序,发现顺序还是原来的鬼样子,我就debug啊,发现该传的参数都传过去了啊,

控制台对应的sql是这样的


屏幕快照 2019-10-09 下午12.57.19.png

发现问题原来是#{}是会自动对传入的String类型数据加一个双引号,我使用的order by #{order},大概解析成order by "createTime" "DESC",这样的话,sql就有问题了,
还有一种sql方式, ${} ,这种方式是sql拼接,会有sql注入的问题(只能手动处理过滤一下输入的内容)

<if test="order != null and order != '' and orderMethod != null and orderMethod != ''">
            order by ${order} ${orderMethod}
</if>

重启服务,点击排序,顺序改变,对应控制台的sql是这样的


屏幕快照 2019-10-09 下午12.59.45.png

此外还有一个like 语句后也需要用${}

vans.png

相关文章

网友评论

      本文标题:Mybatis 动态排序遇到的坑

      本文链接:https://www.haomeiwen.com/subject/vqzwpctx.html