MyBatis中#和$的区别

    MyBatis中使用parameterType向SQL语句传参,parameterType后的类型能够是基本类型int,String,HashMap和java自定义类型。java

    在SQL中引用这些参数的时候,可使用两种方式#{parameterName}或者${parameterName},首先,咱们说一下这两种引用参数时的区别,使用#{parameterName}引用参数的时候,Mybatis会把这个参数认为是一个字符串,例如传入参数是“Smith”,那么在SQL(Select * from emp where name = #{employeeName})使用的时候就会转换为Select * from emp where name = 'Smith'; 同时在SQL(Select * from emp where name = ${employeeName})使用的时候就会转换为Select * from emp where name = Smith。sql

    简单说#{}是通过预编译的,是安全的,而${}是未通过预编译的,仅仅是取变量的值,是非安全的,存在sql注入。安全

    只能${}的状况,order by、like 语句只能用${}了,用#{}会多个' '致使sql语句失效.此外动态拼接sql也要用${}。
spa

相关文章
相关标签/搜索