Mybatis学习-#和$

Mapper 映射文件

和$

在mybatis中,我们在Mapper引用变量时,默认使用的是#

<insert id="addUser" parameterType="user">
        insert into test01.user(username, address,favorite) values
        (#{username},#{address},#{favorite,typeHandler=com.ethan.dao.ListVarcharHandler})
    </insert>

也可以使用$来引用一个变量

#执行时的日志

使用了预编译的方式

$执行时的日志

SQL直接就拼接好了

总结:

在jdbc调用中,SQL的执行,既可以通过字符串拼接、也可以通过占位符来解决参数的传递问题。
在mybatis中,#相当于占位符,$相当于字符串拼接。

参数拼接存在SQL注入的风险,但是在有些情况下,需要通过参数注入,只能使用参数拼接。例如,排序查询,但是排序的字段不确定。

面试,常常问到这个。

posted @ 2020-03-12 21:22  shanshangsong  阅读(161)  评论(0)    收藏  举报