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
  • #它可以取任意类型的参数
  • $只能取对象中的值,不能取普通类型的值
    mybatis中#与$的区别
    mybatis中#与$的区别
    mybatis中#与$的区别
2.2
  • #取值可以有效防止sql注入
  • $符号取值它是sql拼接,不能有效防止sql注入
    mybatis中#与$的区别
2.3
  • #取值让sql语句支持预编译的功能,而$ 符号是不支持的,所以在性能上来说#取值性能要高于$符号。
2.4
  • 使用#一般是用来取值的
  • 而$符号一般用于动态排序

这里先使用#,可以看出,排序并没有起到什么作用。(默认的是升序)
mybatis中#与$的区别
mybatis中#与$的区别
再使用$,可以看出已经按照升序进行排序
mybatis中#与$的区别