1. 程式人生 > 程式設計 >MybatisPlus #{param}和${param}的用法詳解

MybatisPlus #{param}和${param}的用法詳解

作用

mybatis-plus介面mapper方法中的註解(如@Select)或者xml(如)傳入的引數是通過#{param}或者${param}來獲取值。

區別

1.解析方式:

#{param}:會進行預編譯,而且進行型別匹配,最後進行變數替換,括號中可以新增對映型別如
#{param,javaType=int,jdbcType=NUMERIC}

${param}:只實現字串拼接,並不進行資料型別匹配

${param}表示式主要使用者獲取配置檔案資料,DAO介面中的引數資訊,當 $ 出現在對映檔案的 SQl 語句中時建立的不是預編譯的 SQL,而是字串的拼接有可能會導致 SQL 注入的問題,所以一般使用 $ 接收 DAO 引數時,這些引數一般是欄位名,表名等.例如 order by {column}

${} 獲取 DAO 引數資料時,引數必須使用 @param 註解進行修飾

#{} 獲取 DAO 引數資料時,假如引數個數多於一個,可有選擇的使用@param

2.使用

#{param}:變數值的傳遞,必須使用#,使用#{param}就等於使用了PrepareStatement這種佔位符的形式,提高效率。可以防止sql注入等等問題。

#{param}方式一般用於傳入where條件引數值

@Select(
"<script>" +
"select * from student where id= #{param,jdbcType=NUMERIC}"+
"</script> ")

${param}:$只是只是簡單的字串拼接,要特別小心sql注入問題,對應非變數部分,只能用$。$方式一般用於傳入資料庫物件,比如這種group by 欄位,order by 欄位,表名,欄位名等沒法使用佔位符的就需要使用${param}

<select id="getStatistics" resultType="map">
 select count(*) from t_statistic group by ${param}
</select>

到此這篇關於MybatisPlus #{param}和${param}的用法詳解的文章就介紹到這了,更多相關MybatisPlus #{param}和${param}內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!