第一种:#{}
将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号,如
INSERT INTO tb_category_brand (category_id, brand_id) VALUES (#{cid},#{bid}
传入cid=8,bid=7,解析后:INSERT INTO tb_category_brand (category_id, brand_id) VALUES (“8”, “7”}
第二种:${}
$将传入的数据直接显示生成在sql中,如
INSERT INTO tb_category_brand (category_id, brand_id) VALUES (#{cid},#{bid}
传入cid=8,bid=7,解析后:INSERT INTO tb_category_brand (category_id, brand_id) VALUES (8, 7}。传入的是什么就拼接什么。
默认情况下,使用#{}格式的语法会导致MyBatis创建预处理语句属性并以它为背景设置安全的值(比如?)。这样做很安全,能够很大程度防止sql注入。有如果要在SQL语句中插入一个不改变的字符串,如降序,可以使用ORDER BY ${orderClause}。