zoukankan      html  css  js  c++  java
  • MyBatis实现动态排序方法

    问题:

      MyBatis想实现动态排序,即自己传排序字段以及排序方式,但是按正常传参会导致查询失败。

    1 <select id="getUser" resultMap="userMapper">
    2     SELECT * FROM XXX WHERE age = 20
    3     ORDER BY #{sortField} #{sortType}
    4 </select>

      因为上面的sql会被处理成如下,即参数会被加上引号当字符串处理。

    1 SELECT * FROM XXX WHERE age = 20 ORDER BY 'sortField' 'sortType'

    解决方法:

      使用${}方式传参,不要使用#{}方式传参,即:

    <select id="getUser" resultMap="userMapper">
        SELECT * FROM XXX WHERE age = 20
        ORDER BY ${sortField} ${sortType}
    </select>

      但是要注意,正式因为${}是直接拼接SQL的,所以使用上要特别注意,因为会有SQL注入风险。而#{}是有预编译处理的,会通过占位符的形式,进行参数化,所以可以防止SQL注入的风险。

  • 相关阅读:
    最大公约数与最小公倍数
    素数筛
    基础数学问题
    考试前打模板
    斐波那契公约数
    期望及期望dp
    状压dp总结
    树链剖分学习
    B君的教育
    [noip2016]愤怒的小鸟
  • 原文地址:https://www.cnblogs.com/pcheng/p/14061684.html
Copyright © 2011-2022 走看看