当前位置:首页 » 编程语言 » mybatis的sql语句占位符
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

mybatis的sql语句占位符

发布时间: 2022-12-10 21:58:25

㈠ mybatis中的sql语句中的#占位符和$占位符有什么区别

#{},和 ${}传参的区别如下:
使用#传入参数是,sql语句解析是会加上"",当成字符串来解析,这样相比于$的好处是比较明显对的吧,#{}传参能防止sql注入,如果你传入的参数为 单引号',那么如果使用${},这种方式 那么是会报错的
另外一种场景是,如果要做动态的排序,比如 order by column,这个时候务必要用${}
select * from table order by 'name' ,这样是没用
目前来看,能用#就不要用$,

㈡ 浅谈mybatis中的#和$的区别 以及防止sql注入的方法

浅谈mybatis中的#和$的区别 以及防止sql注入的方法
#{ } 解析为一个 JDBC 预编译语句(prepared statement)的参数标记符。
例如,sqlMap 中如下的 sql 语句
select * from user where name = #{name};

解析为:
select * from user where name = ?;

一个 #{ } 被解析为一个参数占位符 ? 。
${ } 仅仅为一个纯碎的 string 替换,在动态 SQL 解析阶段将会进行变量替换