mybatis中:
-
[ #{xxx}只是当做一个字符串处理,因此也防止了sql注入,相当于jdbc中prepared statement,一个 #{ } 被解析为一个参数占位符 。
-
${}: 仅仅为一个纯碎的 string 替换,在动态 SQL 解析阶段将会进行变量替换。
select xxx from table where id in (#{values}); 当values传入为string
1,2,3 时,得出效果只是查询了id=1的数据,如果你想达到字面上的效果: 用${values} 把ids当成字符串传进来
1 select xxx from table where id in (${values});`
2 select xxx from table where id in
< foreach collection="values" index="index" item="id" open="("
close=")" separator=","> #{id} < /foreach >
注意要把 values对象成数组[1,2,3]才生效