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后面的字段时必须使用$,否则报错。

具体详细参见:https://www.cnblogs.com/qianf/p/9534126.html

posted @ 2019-07-01 17:53  jason小蜗牛  阅读(910)  评论(0编辑  收藏  举报