今天看到网上讨论 mybatis #和$的区别
1、区别
1)#{}相当于jdbc中的preparedstatement
#{}是经过预编译的,是安全的,而${}是未经过预编译的,仅仅是取变量的值,是非安全的,存在sql注入.
2)${}是输出变量的值
${}的情况,order by是肯定只能用${}了,用#{}会多个' '导致sql语句失效.此外还有一个like 语句后也需要用${}2、order by后面如果采用预编译的形式动态输入参数,那么实际插入的参数是一个字符串,例子中是:order by 'domain_id'
看到这些讲解后,有一个疑惑,为什么limit 用#{} 可以? 烦请高手讲解
1、区别
1)#{}相当于jdbc中的preparedstatement
#{}是经过预编译的,是安全的,而${}是未经过预编译的,仅仅是取变量的值,是非安全的,存在sql注入.
2)${}是输出变量的值
${}的情况,order by是肯定只能用${}了,用#{}会多个' '导致sql语句失效.此外还有一个like 语句后也需要用${}2、order by后面如果采用预编译的形式动态输入参数,那么实际插入的参数是一个字符串,例子中是:order by 'domain_id'
看到这些讲解后,有一个疑惑,为什么limit 用#{} 可以? 烦请高手讲解
解决方案 »
- java.lang.IllegalArgumentException: argument type mismatch
- 表格 多选框取值求助
- 一个挺简单的逻辑测试题目,只是其中英文部分不能准确理解,请大家帮我看看
- 转页后为什么session值为NULL
- SSH架构中关于业务逻辑层的理解,还请大家指正,谢谢
- 怎么样用jsp实现二级级联菜单?
- 《100分》从数据库读取时间问题
- 改了端口,apache还是不能启动
- 江湖救急:在jsp下怎么实现把查询出来的数据导入Excel表格中?解决了送100分,谢谢
- java调用webservice出错 axis
- spring-springmvc-mybatis错误
- base64在java里重新转成图片,结果图片打不开
where id= #{id,jdbcType=VARCHAR}limit 后跟整型,如果不是数值型,会自动转化为数值型