Mybatis通配符
Mybatis通配符
??在mybatis中的$與#都是在sql中動態(tài)的傳入參數。
???????select id,name,age from student where name=#{name}?
????這個name是動態(tài)的,可變的。當你傳入什么樣的值,就會根據你傳入的值執(zhí)行sql語句。??????? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
1.?MyBatis中使用parameterType向SQL語句傳參,parameterType后的類型可以是基本類型int,String,HashMap和java自定義類型等
2.在xml寫SQL都是用#,如#{param}。但是有時會看到用$的時候,如${param}
3. 那么$ 和 # ,有什么區(qū)別呢?
????1) 通配符 "#" 是將傳入的值當做字符串的形式,如:
????select id,name,age from user where id=#{id}?????????當前端把id值1,傳入到后臺的時候,就相當于?(#{}?傳入值時,sql解析時,參數是帶引號的)? ????
????2)通配符 "$" 是將傳入的數據直接顯示生成sql語句,如:
????select id, name, age from user where id=${id}?????????當前端把id值1,傳入到后臺的時候,就相當于?(${}穿入值,sql解析時,參數是不帶引號的)
????select id,name,age from student where id = 1.?????3) 使用 "#" 可以很大程度上防止sql注入。(語句的拼接)? ??????? ??
????????????#{}: 解析為一個 JDBC 預編譯語句(prepared statement)的參數標記符,一個 #{ } 被解析為一個參數占位符?。
? ??????????${}: 僅僅為一個純碎的 string 替換,在動態(tài) SQL 解析階段將會進行變量替換。
?????eg: ?select?id,name,age?from student where name=#{name} ? -- name='cy'
? ? ? ?? ? ?select?id,name,age?from student where name=${name} ? ?-- name=cy
?????4)? 但是如果使用在order by 中就需要使用 "$".
?????5)? 在大多數情況下還是經常使用"#",但在不同情況下必須使用"$".?
總結
以上是生活随笔為你收集整理的Mybatis通配符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Element is not click
- 下一篇: 自己写jquery表单验证