mybatis中#与$的区别
1、共同点
#和$都是用来取值的
①参数传递普通类型(8大基本数据类型8大包装类。再加一个String)
#: 正常发送的sql语句 SELECT * FROM t_student WHERE id=?
$: 传递普通类型,它是要报错的,取不到值。
②参数传递对象
#: 正常发送的sql语句 SELECT * FROM t_student WHERE id=?
$: 正常发送sql语句 SELECT * FROM t_student WHERE id=2
2、不同点
2.1
- #它可以取任意类型的参数
- $只能取对象中的值,不能取普通类型的值
2.2
- #取值可以有效防止sql注入
- $符号取值它是sql拼接,不能有效防止sql注入
2.3
- #取值让sql语句支持预编译的功能,而$ 符号是不支持的,所以在性能上来说#取值性能要高于$符号。
2.4
- 使用#一般是用来取值的
- 而$符号一般用于动态排序
这里先使用#,可以看出,排序并没有起到什么作用。(默认的是升序)
再使用$,可以看出已经按照升序进行排序