女装网站建设计划书,网络安全工程师难学吗,歌手网站建设,企业网页建设公司哪家比较好#{}和${}的区别 .本质区别:使用注意事项防止SQL注入排序like查询 . 在使用mybatis操作数据库的时候,我们在编写sql语言的时候,会遇到一个问题,就是在传参的时候,有两个符号#,$.这两个符号有什么异同呢,接下来,我就会带着大家对这个问题进行简单的探讨
本质区别:
#执行的是预编… #{}和${}的区别 .本质区别:使用注意事项防止SQL注入排序like查询 . 在使用mybatis操作数据库的时候,我们在编写sql语言的时候,会遇到一个问题,就是在传参的时候,有两个符号#,$.这两个符号有什么异同呢,接下来,我就会带着大家对这个问题进行简单的探讨
本质区别:
#执行的是预编译SQL,$执行的是即时SQL. #{} 使用的是预编译SQL, 通过 ? 占位的方式, 提前对SQL进行编译, 然后把参数填充到SQL语句中. #{} 会根据参数类型, 自动拼接引号 ‘’ . ${} 会直接进行字符替换, ⼀起对SQL进行编译. 如果参数为字符串, 需要加上引号 ‘’ ,因为它不会自动拼接引号 ‘’ .
使用注意事项
防止SQL注入
SQL注入是通过操作输入的数据来修改事先定义好的SQL语句以达到执行代码对服务器进行攻击的方法。 因此,${}有SQL注入的风险,我们应该尽量使用#{}
排序
在做sql排序的时候,desc和asc不能添加引号,因此我们只能使用${}
like查询
like查询表达式: ‘%参数%’ 如果参数使用#{},则会给参数自动添加一个,查询会报错,因此我们不能使用#{},但是使用${}又可能会导致SQL注入,因此我们需要用其他的方法来解决问题 解决办法: 使用mysql 的内置函数 concat() 来处理实现代码如下
like concat(%,#{参数},%)