Mybatis:#{}与${}的不同之处

    科技2024-06-25  65

    #{}与${}的不同之处

    #{} 的作用主要是替换预编译语句(PrepareStatement)中的占位符? 【推荐使用】

    INSERT INTO user (name) VALUES (#{name}); INSERT INTO user (name) VALUES (?);

    ${} 的作用是直接进行字符串替换

    INSERT INTO user (name) VALUES ('${name}'); INSERT INTO user (name) VALUES ('kuangshen');

    备注 #{} 很大程度上可以防止SQL注入(SQL注入是发生在编译的过程中,因为恶意注入了某些特殊字符,最后被编译成了恶意的执行操作); ${} 主要用于SQL拼接的时候,有很大的SQL注入隐患。

    应用场景 #{} 用于CRUD语句 ${} 用于模糊查询(要加%%)

    对于#{}与${}的选择

    1、能用 #{} 的地方就用 #{},尽量少用 ${} 2、表名作参数,或者order by 排序时用 {} 3、传参时参数使用@Param("")注解,@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值(相当于又加了一层密),正确的将参数传入sql语句中(一般通过#{}的方式,${}会有sql注入的问题)
    Processed: 0.015, SQL: 8