mybatis中#和$符号的区别

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wn5231/article/details/87896425

mybatis中#和$符号的区别

#{}

  1. 使用#{}意味着使用的预编译的语句,即在使用jdbc时的preparedStatement时,sql语句中的参数会用?作占位符,可以防止sql注入。
  2. 使用#{}时形成的sql语句,组成sql语句的时候把参数默认为字符串,带有引号,例:
    select * from student where id=#{id}
    调用这个语句时可以通过后台看到打印出的sql为:
    select * from student where id='2'

${}

  1. 使用${}时的sql不会当做字符串处理,原样输出:
    select * from student where id=${id}
    在调用这个语句时控制台打印的为:
    select * from student where id=2

  2. 在需要原样输出时使用${},如:
    select * from ${tableName} order by ${id}
    则后台语句为:select * from student order by id
    使用#{}则成:select * from 'student' order by 'id'是不对的

注:


在使用以下的配置时,必须使用#{}

<select id="selectMessageByIdI" parameterType="int" resultType="Message">
          select * from message where id=#{id};
</select>

在parameterType是int时,sql语句中必须是#{}

展开阅读全文

没有更多推荐了,返回首页