您的位置:首页 > 编程语言 > Java开发

Mybatis 动态修改排序规则

2017-01-12 00:00 274 查看

一:理论

1:#是将传入的值当做字符串的形式
例如 :select * from 表名 where id =#{id}
解析:select* from student where id ='1'.
2 :$是将传入的数据直接显示生成sql语句
例如 :select * from 表名 where id =${id}
解析:select* from student where id =1.
3 :使用#可以很大程度上防止sql注入。(语句的拼接)
4: 但是如果使用在order by 中就需要使用 $.
5 :在大多数情况下还是经常使用#,但在不同情况下必须使用$.
#与$ 的区别最大在于:#{} 传入值时,sql解析时,参数是带引号的,而
${} 传入值时,sql解析时,参水是不带引号的。
在mybatis中的$与#都是在sql中动态的传入参数。

二:使用$与#

#{}: 解析为一个 JDBC 预编译语句(prepared statement)的参数标记符(?),一个 #{ } 被解析为一个参数 占位符 。
${}: 仅仅为一个纯碎的 string 替换,在动态 SQL 解析阶段将会进行变量替换。
例如: select * from student where name=#{value} -- name='cy'
select * from student where name=${value} -- name=cy

三:总结

如果是 参数 一般使用 #{} 例如 字段,limit 的也可使用

如果是 sql 本身条件为动态,使用 ${} 例如 order by ,limit 的也可使用

Interger 类型 都可使用,String 类型请慎重!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Mybatis Java