mybatis中的兩種傳參方式 和 原理

2021-08-07 11:53:22 字數 361 閱讀 5486

之前沒注意,最近公司測試提了個bug,

問題:輸入框中輸入單引號會報錯,

原因:單引號截斷了sql

總結:#{}速度快,能防止sql注入,是佔位符方式,先預編譯,然後填充引數,字串格式,相當於填空題 使用者名稱=(___),引數只是下劃線上的內容

${}是直接拼接到語句上,執行語句,對於上面那道填空題 ,這種方式需要自己拼括號和引數,但是也可以拼接想執行的任何語句,也就是傳說中的sql注入

這也是jdbc盡量使用preparedstatement而不是statement的原因,總之:能用的#就不用$

兩種傳參方式的對比

這種方式使用變數 常量 陣列元素作為函式引數,實際是將實參的值複製到形參相應的儲存單元中,即形參和實參分別占用不同的儲存單元,這種傳遞方式稱為 引數的值傳遞 或者 函式的傳值呼叫 值傳遞的特點是單向傳遞,即主調函式呼叫時給形參分配儲存單元,把實參的值傳遞給形參,在呼叫結束後,形參的儲存單元被釋放,而...

pytest傳參的兩種方式?

在測試用例上加註解 pytest.mark.parametrize loginame,password 值1,值2 值1,值2 fixture傳參。1 在測試用例上加註解 pytest.mark.parametrize login data data2,indirect true login dat...

vue路由傳參的兩種方式

路由傳參的兩種方式params和query params相當於post,引數資訊不會顯示在位址列中,query相當於get,會把引數資訊暴露在位址列中 params傳參 第一步 在router.js中配置路由 例 import params from components params index ...