spring mybatis 中 ${} 和 #{}区别

1 Spring 值注解--@Value 中${} 和 #{}区别:

   ${} 是引用外部参数对应的property

   #{}是SPEL表达式,内部表达式可以直接引用spring IoC管理的对象的属性

2 Mybatis 动态sql ${} 和 #{}的区别:

    mybatis 对sql进行预编译之前会先进行动态解析,解析为一个BoundSql对象(动态解析)

    #{}会被解析为 参数标记符号 ?;

    ${}会直接将传入的参数作为String字符串替换;

${} 代价:

无法防止sql注入;

${} 优势:

一般传入的是数据库对象,如表;

#{}优势:

很大程度上可以防止sql注入;

你可能感兴趣的:(spring mybatis 中 ${} 和 #{}区别)