今天遇到一个很奇怪的问题,mybatis的 # 和 $ 防注入的区别我知道,百度了一下只有说 order by 要使用 $ 这一层,却没有说使用 # 也不报错的问题。
情况是这样的:
order by 后面接动态参数,如果这个动态参数在 table 里不存在,按理来说这个sql执行是会报错的。
我直接在数据库运行sql正是报错的。
但是问题来了,用 #{不存在的字段} 他不会报错,还是会查询出结果,虽然结果没有排序。
但是用 ${不存在的字段} 就会报错。
有大神指点一下这是什么原因吗?
不报错的sql:
select * from table order by #{column};
会报错的sql:
select * from table order by ${column};