美文网首页
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