Mybatis(五)#{}与${}的区别与使用

在映射文件中,有两种方式可在SQL语句中引入参数的值:

  1. #{}
<select id="selectMultiParam" resultType="cn.krain.domain.Student">
    select * from student where name=#{myname} or age=#{myage}
</select>
<!-- 经过Mybatis处理过后的SQL语句为: select * from student where name=? or age=? -->
  1. ${}
<select id="selectMultiParam" resultType="cn.krain.domain.Student">
    select * from student where name=${myname} or age=${myage}
</select>
<!-- 经过Mybatis处理过后的SQL语句为: select * from student where name='康康' or age=23 -->

#{}与${}的区别:

  1. #{}使用"?"作为占位符,使用preparedStatement对象进行预编译,效率高
  2. #{}能够避免SQL注入,更安全
  3. ${}是将参数与SQL拼接起来,使用Statement对象,效率低
  4. 存在SQL注入风险,缺乏安全性
  5. ${}可以用来替换表名或列名
全部评论

相关推荐

点赞 评论 收藏
分享
06-15 20:57
已编辑
门头沟学院 Java
CARLJOSEPH...:年轻人有傲气很正常,但是建议工作前洗净傲气。 说实在的,什么奖学金什么奖项的都很一般。尊重你的老师,在有时间的时候去上课,真遇到走不开的事,请态度端正地向你的老师说明情况,请求请假。我相信任何一个有师德的老师都会允许的(我的老师就是这样)。
点赞 评论 收藏
分享
醉蟀:你不干有的是人干
点赞 评论 收藏
分享
07-09 18:28
门头沟学院 Java
写着提前批,结果还要实习4个月以上???
程序员牛肉:这种不用看,直接投了,面试的时候问对应的HR就行。有可能他们是直接复制的暑期实习的模板。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务