在mybatis中#{}和${}的区别,使用场景及sql注入

转载:https://blog.csdn.net/ideality_hunter/article/details/80623526

https://blog.csdn.net/weixin_42323802/article/details/82425111

2018年09月05日 15:47:53 打豆豆。 阅读数:1061 标签: #{}和${} #{} ${}  更多

个人分类: mybatis

版权声明:本站所提供的文章资讯、软件资源、素材源码等内容均为本作者提供、网友推荐、互联网整理而来(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考,如有侵犯您的版权,请联系我,本作者将在三个工作日内改正。 https://blog.csdn.net/weixin_42323802/article/details/82425111

在mybatis的  mapper.xml中,首先说下使用场景:

#{ }  :#代表占位符,用来传递参数;

${ }  :$用来拼接sql 语句的;譬如:把数据库中的表名作为参数拼接在 sql 语句中,必须使用 $

 

 mapper接口;

 
  1. //@Param 注解的作用如下

  2. //mapper接口中 ,给String tableName参数 起个名字叫tableName1

  3. // 这样mapper.xml 中 #{tableName1} 和${tableName1}可以拿到参数 tableName 的值

  4. public List findUserByTableName(@Param("tableName1") String tableName);

 mapper.xml 配置文件中添加 sql 语句;

 

#{ }和${ }  区别如下:

1、#是预编译的方式,$是直接拼接;

2、#不需要关注数据类型,mybatis实现自动数据类型转换;$不做数据类型转换,需要自行判断数据类型;

3、#可以防止sql注入;$不能防止sql注入;

4、如果 parameterType 只有一个参数,默认情况下,#{ }中可以写任意的名字;${ }中只能用value来接收。

 
  1.