美文网首页
MyBatis项目中SQL语句#{}和${}的区别

MyBatis项目中SQL语句#{}和${}的区别

作者: 煗NUAN | 来源:发表于2020-03-11 19:01 被阅读0次

    MyBatis项目中SQL语句#{}和${}的区别

    1. SQL语句中#{}在引用时,如果发现目标是一个字符串,则会将其值作为一个字符串拼接到SQL语句上,即拼接时自动包裹引用

      1. 用来传入参数,sql在解析的时候会加上" ",当成字符串来解析 ,例如 role_id = "4";
      2. 使用#{}能够很大程度上防止sql注入;
    2. ${}引用时,即使发现目标是一个字符串,页不会作为字符串处理,拼接在SQL时,不会自动包裹引用.

      1. 用${}传入数据直接显示在生成的sql中,例如 role_id = 4.
      2. ${}方式无法防止sql注入;
      3. ${}一般用入传入数据库对象,比如数据库表名;
      4. 能用 #{} 时尽量用 #{}
    • 通常情况下,使用#{}
    insert into user values (default,#{name},55); 
        --> insert into user values (default,'fff',55);
    insert into user values (default,${name},55); 
        --> insert into user values (default,fff,55);//sql语句错误
    
    • 如果引用的是一个列名,使用${}
    select * from user order by #{uname}; 
        --> select * from user order by 'age';  //sql语句错误
    select * from user order by ${uname}; 
        --> select * from user order by age;
    

    相关文章

      网友评论

          本文标题:MyBatis项目中SQL语句#{}和${}的区别

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