• 技术文章 >常见问题

    mybatis中#和$的区别是什么

    青灯夜游青灯夜游2019-04-19 17:19:58原创43500
    在mybatis中#和$的主要区别是:#传入的参数在SQL中显示为字符串,#方式能够很大程度防止sql注入;$传入的参数在SqL中直接显示为传入的值,$方式无法防止Sql注入。

    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中文网相关教程栏目!!!

    以上就是mybatis中#和$的区别是什么的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:mybatis # $
    上一篇:dns怎么设置? 下一篇:c盘哪些目录可以删除
    PHP编程就业班

    相关文章推荐

    • Mybatis的使用(mapper接口方式)• SQL 正则表达式及mybatis中使用正则表达式• Mybatis映射文件的详解• mybatis是什么

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网