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

熱點內容
安卓怎麼跟別人合拍唱歌有自己聲音 發布:2025-08-14 14:57:41 瀏覽:984
java在線培訓系統 發布:2025-08-14 14:56:03 瀏覽:645
電腦怎麼卸載伺服器管理 發布:2025-08-14 14:37:57 瀏覽:503
怎麼看低配電腦的配置 發布:2025-08-14 14:24:16 瀏覽:398
安卓系統程序怎麼調節成方塊 發布:2025-08-14 14:23:22 瀏覽:664
遺傳演算法軸承 發布:2025-08-14 14:08:42 瀏覽:979
python調用restfulapi 發布:2025-08-14 13:58:07 瀏覽:851
怎麼下載雲伺服器到電腦上 發布:2025-08-14 13:58:06 瀏覽:658
蘋果搭配什麼安卓手機 發布:2025-08-14 13:57:13 瀏覽:945
qq緩存的文件視頻 發布:2025-08-14 13:50:21 瀏覽:387