建设工程造价管理协会网站,凡科做的网站不能被收录,珠海市企业网络推广,网站开发 知识产权MyBatis中#{}和${}的作用与区别_陈三千的博客-CSDN博客_mybatis${}有什么用 MyBatis中#{}和${}的作用与区别 MyBatis中#{}和${}的作用与区别_陈三千的博客-CSDN博客_mybatis${}有什么用
在mybatis中#和$的主要区别是#xff1a;#传入的参数在SQL中显示为字符串#xff0c;#方…MyBatis中#{}和${}的作用与区别_陈三千的博客-CSDN博客_mybatis${}有什么用 MyBatis中#{}和${}的作用与区别 MyBatis中#{}和${}的作用与区别_陈三千的博客-CSDN博客_mybatis${}有什么用
在mybatis中#和$的主要区别是#传入的参数在SQL中显示为字符串#方式能够很大程度防止SQL注入$传入的参数在SQL中直接显示为传入的值$方式无法防止SQL注入。
1、传入的参数在SQL中显示不同
#{} 将传入的参数数据在SQL中显示为字符串会对自动传入的数据加一个双引号。 「对自动传入的数据加一个双引号」
例使用以下SQL语句
SELECT id,name FROM student WHERE id #{id};
//当我们传递的参数id为 1 时上述 SQL 的解析为
SELECT id,name FROM student WHERE id 1; ${} 将传入的参数数据直接显示生成在SQL中
例使用以下SQL语句
SELECT id,name FROM student WHERE id ${id};
//当我们传递的参数id为 1 时上述 sql 的解析为
SELECT id,name FROM student WHERE id 1; 2、#{}可以防止SQL注入的风险语句的拼接但${}无法防止SQL注入。
3、${}方式一般用于传入数据库对象例如表名用参数传递进SQL。
4、大多数情况下还是经常使用#{}一般能用#{}的就别用${}但有些情况下必须使用${}例MyBatis排序时使用ORDER BY动态参数时需要注意得用${}而不是#{}。
5、#{} 的参数替换是发生在 DBMS 中而 ${} 则发生在动态解析过程中。
MyBatis 是一款优秀的持久层框架它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
动态 sql 是 mybatis 的主要特性之一在 mapper 中定义的参数传到 xml 中之后在查询之前 mybatis 会对其进行动态解析。mybatis 为我们提供了两种支持动态 sql 的语法#{} 以及 ${}两者都是动态的向sql语句中传入需要的参数。 ———————————————— 版权声明本文为CSDN博主「陈三千」的原创文章遵循CC 4.0 BY-SA版权协议转载请附上原文出处链接及本声明。 原文链接https://blog.csdn.net/weixin_38088772/article/details/114503189