MyBatis中使用parameterType向SQL語句傳參,parameterType後的類型能夠是基本類型int,String,HashMap和java自定義類型。java
在SQL中引用這些參數的時候,可使用兩種方式#{parameterName}或者${parameterName},首先,咱們說一下這兩種引用參數時的區別,使用#{parameterName}引用參數的時候,Mybatis會把這個參數認爲是一個字符串,例如傳入參數是「Smith」,那麼在SQL(Select * from emp where name = #{employeeName})使用的時候就會轉換爲Select * from emp where name = 'Smith'; 同時在SQL(Select * from emp where name = ${employeeName})使用的時候就會轉換爲Select * from emp where name = Smith。sql
簡單說#{}是通過預編譯的,是安全的,而${}是未通過預編譯的,僅僅是取變量的值,是非安全的,存在sql注入。安全
只能${}的狀況,order by、like 語句只能用${}了,用#{}會多個' '致使sql語句失效.此外動態拼接sql也要用${}。
spa