Java编程之MyBatis框架sql中变量引用方式#{}与${}的区别
编程教程
>
Java
(2591)
2024-11-26 14:39:04
Java编程之MyBatis框架sql中变量引用方式#{}与${}的区别
#{}和 ${}传参的区别如下:
1.使用#传入参数是,sql语句解析变量时候将添加""包裹变量,当成字符串来解析,$则不会用""包裹;
2.#能使用PreparedStatement语句提高一定的效率;
3.#{}传参能防止sql注入,如果你传入的参数为 单引号',那么如果使用${},这种方式 那么是会报错的;
4.如果要做动态的排序,动态查询某个字段比如 order by column,这个时候务必要用${},select * from table order by 'name' ,这样是没用
5.从安全角度出发,能用#就不要用$;
总结:
简单来说#{} 解析的是占位符?可以防止SQL注入, 比如打印出来的语句
select * from table where id=?
然而${} 则是不能防止SQL注入打印出来的语句
select * from table where id=2
实实在
http://blog.xqlee.com/article/116.html