美文网首页
MyBatis中#{}和${}的区别

MyBatis中#{}和${}的区别

作者: 全麦土司 | 来源:发表于2019-12-28 22:03 被阅读0次

它们都表示向sql语句中传入的可变参数

预编译#{}:将传入的数据都当成一个字符串,会对自动传入的数据加上一个单引号,很大程度避免sql注入。

传值${}:传入的数值直接显示生成再sql中,没法防止sql注入

假如xml文件中的数据是这样的:

<select id = "findAll">
  select #{sql}
  from #{table}
  where sex = #{sex}
  order by #{order}
  
</select>


~//main函数
sql=“name,address,birthday”;
table="user";
order="name";
sex="1";

那么最终的sql语句:
select 'name,address,birthday' from 'user' where sex =  '1' order by 'name';

这样的查询语句会报错。因为没有这样的查询字段,而且没有这样的表。


sql中的查询顺序:

1. 语法:
    select
        字段列表
    from
        表名列表
    where
        条件列表
    group by
        分组字段
    having
        分组之后的条件
    order by
        排序
    limit
        分页限定

相关文章

  • Mybatis 详解

    [mybatis中"#"和"$"的区别]动态 sql 是 mybatis 的主要特性之一,在 mapper 中定义...

  • Mybatis常见面试题

    Mybatis常见面试题 #{}和${}的区别是什么? #{}和${}的区别是什么? 在Mybatis中,有两种占...

  • MyBatis中 #{} 和 ${} 区别

    Mybatis的Mapper映射文件中,有两种方式可以引用形参变量进行取值: #{} 和 ${}本文将简述两种方式...

  • mybatis中#{}和${}区别

    #{},预编译,是占位符,在mybatis处理sql的时候,#{}换成了?,调用PrepareStatement来...

  • mybatis中#和$的区别

    一般来说,我们使用mybatis generator来生成mapper.xml文件时,会生成一些增删改查的文件,这...

  • MyBatis中#{}和${}的区别

    1.将Mapper.xml中的SQL语句解析为JDBC一个预编译指令时不同。 使用#{}时 这句SQL语句会被解析...

  • myBatis中#和$的区别

    在mybatis接口mapper文件中引用传入的参数是通过#{param}或者${param}来使用的。 1.数据...

  • MyBatis中$和#的区别

    动态 SQL 是 mybatis 的强大特性之一,也是它优于其他 ORM 框架的一个重要原因。mybatis 在对...

  • Mybatis中#和$的区别

    tips:能用#的就别用$.Mybatis中进行参数传递,可以使用两种方式#{}或者${}其中,#{ } 解析为一...

  • MyBatis中#和$的区别

    MyBatis中使用parameterType向SQL语句传参,parameterType后的类型可以是基本类型i...

网友评论

      本文标题:MyBatis中#{}和${}的区别

      本文链接:https://www.haomeiwen.com/subject/hnleoctx.html