Mybatis #{}和${}区别

    技术2022-07-11  97

    1,#会为里面的参数添加””,即变成字符串;但$不会,而是保留原始的状态。

    i = 1 #{i} ==>1” ${i} ==>1

    2, 因此使用 # 可以很大一部分防止sql注入,如果传入参数建议用 # ,但如果拼接sql的关键字用$ 。

    sql注入: 用户恶意的输入sql语句当做输入参数,以此欺骗服务器达到某种不可告人的目的。 解决办法: 输入参数,明确参数类型; 不要直接拼接字符串; 对输入内容过滤;

    附:mybatis中模糊查询的使用

    1,contact(‘%’, #{search}, ‘%’) //如果 search = null, 那么 ‘%null%’ 2, ‘%${search}%’ //如果search为null,那么”%%”

    如果search = test,这两种方式拼接出的都是 ‘%test%’

    Processed: 0.010, SQL: 9