當前位置:首頁 » 編程語言 » mybatis的動態sql

mybatis的動態sql

發布時間: 2023-10-10 06:58:45

⑴ mybatis 中 #{} 和 ${} 的區別及應用場景

動態 sql 是 mybatis 的主要特性之一,在 mapper 中定義的參數傳到 xml 中之後,在查詢之前 mybatis 會對其進行動態解析。

mybatis 為我們提供了兩種支持動態 sql 的語法:#{} 以及 ${} 。

如: #{} : 根據參數的 類型 進行處理,比如傳入String類型,則會為參數加上雙引號。#{} 傳參在進行SQL預編譯時,會把參數部分用一個佔位符 ? 代替,這樣可以防止 SQL注入。

如: ${} : 將參數取出不做任何處理,直接放入語句中,就是簡單的字元串替換,並且該參數會參加SQL的預編譯,需要手動過濾參數防止 SQL注入。

因此 mybatis 中優先使用 #{};當需要動態傳入 表名或列名 時,再考慮使用 ${} 。

正確的寫法應該是使用 ${order_by},這樣解析後就是一個列名,然後才能對數據進行排序,已達到業務需求。

⑵ mybatis中動態sql執行原理

解釋器模式: 初始化過程中構建出抽象語法樹,請求處理時根據參數對象解釋語法樹,生成sql語句。
工廠模式: 為動態標簽的處理方式創建工廠類(SqlTagHandlerFactory),根據標簽名稱獲取對應的處理方式。
策略模式: 將動態標簽段銷明處理方式抽象為介面,針對不同標簽有相應的握告實現類。解釋抽象語法樹斗含時,定義統一的解釋流程,再調用標簽對應的處理方式完成解釋中的各個子環節

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:705
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:969
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:677
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:830
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:738
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1077
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:309
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:189
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:875
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:831