美文网首页
mybatis ${} 与#{} 拼接字符串区别

mybatis ${} 与#{} 拼接字符串区别

作者: John_Phil | 来源:发表于2020-05-06 00:18 被阅读0次

    MyBatis中使用parameterType向SQL语句传参,parameterType支持的类型可以是基本类型int,String,HashMap和java自定义类型。

    在SQL中引用这些参数的时候,可以使用两种方式:

    #{parameterName}

    ${parameterName}

    首先,我们说一下这两种引用参数时的区别,使用#{parameterName}引用参数的时候,Mybatis会把这个参数认为是一个字符串,并自动加上'',例如传入参数是“Smith”,那么在下面SQL中:

    Select * from emp where name = #{employeeName}
    

    使用的时候就会转换为:

    Select * from emp where name = 'Smith'; 
    

    同时使用${parameterName}的时候在下面SQL中

    Select * from emp where name = ${employeeName}
    

    就会直接转换为:

    Select * from emp where name = Smith
    

    简单说#{}是经过预编译的,是安全的。

    而${}是未经过预编译的,仅仅是取变量的值,是非安全的,存在SQL注入。

    #{} 这种取值是编译好SQL语句再取值
    ${} 这种是取值以后再去编译SQL语句
    

    相关文章

      网友评论

          本文标题:mybatis ${} 与#{} 拼接字符串区别

          本文链接:https://www.haomeiwen.com/subject/iunvghtx.html