全国服务热线:4008-888-888

技术知识

mybatis中#{}和${}的差别

动态性 sql 是 mybatis 的关键特点之一,在 mapper 中界定的主要参数传入 xml 中以后,在查寻以前 mybatis 会对其开展动态性分析。mybatis 为大家出示了二种适用动态性 sql 的英语的语法:#{} 及其 ${} 。

1、#非常于多数据 再加 双引号,$非常于立即显示信息数据信息。

2、#{} : 依据主要参数的种类开展解决,例如传到String种类,则会为主要参数再加双引号。#{} 传参在开展SQL预编译程序时,会把主要参数一部分用一个占位性病变符 ? 替代,那样能够避免 SQL引入。
3、${} : 将主要参数取下不做一切解决,立即放进句子中,便是简易的标识符串更换,而且该主要参数会报名参加SQL的预编译程序,必须手动式过虑主要参数避免 SQL引入。
4、因而 mybatis 中优先选择应用 #{};当必须动态性传到 表名或列名时,再考虑到应用 ${} , 较为独特,他的运用情景是必须动态性传到表名或列名时应用,MyBatis排列时应用 orderby 动态性主要参数时要要留意,用 {} 较为独特, 他的运用情景是 必须动态性传到 表名或列名时应用,MyBatis排列时应用order by 动态性主要参数时要要留意,用较为独特,他的运用情景是必须动态性传到表名或列名时应用,MyBatis排列时应用orderby动态性主要参数时要要留意,用而并不是 #。

比如:
1、#对传到的主要参数视作标识符串,也便是它会预编译程序,select * from user where user_name=${rookie},例如我传一个rookie,那麼传回来便是 select * from user where user_name = ‘rookie’;

2、$不容易将传到的值开展预编译程序, select * from user where user_name= ${rookie} ,那麼传回来的sql便是:select * from user where user_name=rookie

3、# 优点取决于它能非常大水平避免sql引入,$ 不好。例如:客户开展一个登陆实际操作,后台管理sql认证款式的:


假如前台接待传出的客户名是“rookie”,登陆密码是 “1 or 2”,用#的方法也不会出現sql引入,换为用$ 方法,sql句子就变为了 select * from user where user_name=rookie and password = 1 or 2。那样得话就产生了sql引入。




HTTPX 基础教程-新乡seo|网站优化,网站建设_微信公众号:zeropython—昊天博客


在线客服

关闭

客户服务热线
4008-888-888


点击这里给我发消息 在线客服

点击这里给我发消息 在线客服