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

2019-12-28  本文已影响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
        分页限定
上一篇 下一篇

猜你喜欢

热点阅读