mybatis中#和$的区别
mybatis是一款优秀的持久层框架。它的强大之一就是sql的动态组装了。在mybatis中#和$
都表示参数的引用,表示一个占位符。
1、#
号在sql中以字符串形式显示,可以有效防止sql注入攻击。例如select * from emp where name=#{name}
,传入jason时,实际上sql语句是这样的:select * from emp where name="jason"。
2、$
在sql中以值的形式表示(即原样显示),不能防止sql注入攻击。例如select * from emp where name =${name}
,传入jason时,sql语句变为select * from emp where name=jason。也就是#
在传入值时会加引号变成字符串,而$
则不会变为字符串而是原样显示。
模糊查询和order by后面的字段时必须使用$,否则报错。