Rumah >masalah biasa >mybatis中#和$的区别是什么

mybatis中#和$的区别是什么

青灯夜游
青灯夜游asal
2019-04-03 15:15:5954984semak imbas

在mybatis中#和$的主要区别是:#传入的参数在SQL中显示为字符串,#方式能够很大程度防止sql注入;$传入的参数在SqL中直接显示为传入的值,$方式无法防止Sql注入。

mybatis中#和$的区别是什么

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

动态 sql 是 mybatis 的主要特性之一,在 mapper 中定义的参数传到 xml 中之后,在查询之前 mybatis 会对其进行动态解析。mybatis 为我们提供了两种支持动态 sql 的语法:#{} 以及 ${};两者都是动态的向sql语句中传入需要的参数。

mybatis中#和$的区别是什么

1、传入的参数在SQL中显示不同

#传入的参数在SQL中显示为字符串(当成一个字符串),会对自动传入的数据加一个双引号。

例:使用以下SQL

select id,name,age from student where id =#{id}

当我们传递的参数id为 "1" 时,上述 sql 的解析为:

select id,name,age from student where id ="1"

$传入的参数在SqL中直接显示为传入的值

例:使用以下SQL

select id,name,age from student where id =${id}

当我们传递的参数id为 "1" 时,上述 sql 的解析为:

select id,name,age from student where id =1

2、#可以防止SQL注入的风险(语句的拼接);但$无法防止Sql注入。

3、$方式一般用于传入数据库对象,例如传入表名。

4、大多数情况下还是经常使用#,一般能用#的就别用$;但有些情况下必须使用$,例:MyBatis排序时使用order by 动态参数时需要注意,用$而不是#。

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!

Atas ialah kandungan terperinci mybatis中#和$的区别是什么. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:dns怎么设置?Artikel seterusnya:c盘哪些目录可以删除