Mybatis 動態修改排序規則

一:理論

1:#是將傳入的值當作字符串的形式sql

    例如 :select * from 表名 where id =#{id}mybatis

     解析:select* from student where id ='1'.spa

 2 :$是將傳入的數據直接顯示生成sql語句字符串

    例如 :select * from 表名 where id =${id}string

     解析:select* from student where id =1.it

 3 :使用#能夠很大程度上防止sql注入。(語句的拼接)編譯

 4: 可是若是使用在order by 中就須要使用 $.變量

 5 :在大多數狀況下仍是常用#,但在不一樣狀況下必須使用$. select

    #與$ 的區別最大在於:#{} 傳入值時,sql解析時,參數是帶引號的,而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 類型請慎重!

相關文章
相關標籤/搜索