Mapper.xml 中 # 和 $ 的 区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mapper.xml 中 # 和 $ 的 区别相关的知识,希望对你有一定的参考价值。
参考技术A 简单说在实际中我们尽可能使用前者而并非后者, 因为前者会对你插入的字符串做个简单的转换,能在一定程度上防止 SQL 注入。
举个例子
假设我们前端没有做验证
而有人选择传入参数 'Draper' OR 1=1 那么整体的 SQL 语句就会变成
那么无论有没有 Draper 他都会检索多条记录。
所以在实际中尽可能选择 #,除非迫不得已
MyBatis Mapper.xml文件中 $和#的区别
1.优先使用#{paramName,jdbcType=VARCHAR} 写法,除了可以防止sql注入以外,它还能在参数里含有单引号的时候自动转义,
而${paramName}由于是类似于拼接sql的写法,不具备此功能。
2.注意,使用 #{paramName,jdbcType=VARCHAR} 写法的时候,模糊查询的写法为:‘%‘||#{paramName,jdbcType=VARCHAR}||‘%‘
以上是关于Mapper.xml 中 # 和 $ 的 区别的主要内容,如果未能解决你的问题,请参考以下文章