當前位置:首頁 » 編程語言 » 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),根據標簽名稱獲取對應的處理方式。
策略模式: 將動態標簽段銷明處理方式抽象為介面,針對不同標簽有相應的握告實現類。解釋抽象語法樹斗含時,定義統一的解釋流程,再調用標簽對應的處理方式完成解釋中的各個子環節

熱點內容
aspx腳本 發布:2025-02-01 06:44:13 瀏覽:999
訪問策略更新 發布:2025-02-01 06:39:29 瀏覽:498
pythoneditplus 發布:2025-02-01 06:31:57 瀏覽:275
bmp轉png源碼 發布:2025-02-01 06:30:08 瀏覽:470
魔獸聯盟人多的伺服器是什麼 發布:2025-02-01 06:25:25 瀏覽:41
c語言字元串子串刪除 發布:2025-02-01 06:25:23 瀏覽:534
怎麼改電腦鎖屏密碼 發布:2025-02-01 06:16:55 瀏覽:472
存儲卡不能格式化怎麼辦 發布:2025-02-01 06:02:55 瀏覽:691
scratch編程網站 發布:2025-02-01 05:51:27 瀏覽:396
安卓怎麼更好用 發布:2025-02-01 05:45:38 瀏覽:147