它们都表示向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
分页限定
网友评论