Mybatis實用教程之XML實現動態sql

系列文章目錄

1、mybatis簡介及數據庫連接池
2、mybatis中selectOne的使用
3、mybatis簡單使用
4、mybatis中resultMap結果集的使用


Mybatis實用教程之XML實現動態sql

  • 系列文章目錄
  • 前言
  • 1. 動態條件查詢
  • 2. 動態更新語句
  • 3. 動態插入語句
  • 4、其他標簽的使用


前言


當編寫 MyBatis 中復雜動態 SQL 語句時,使用 XML 格式是一種非常靈活的方式。這樣做可以根據不同條件動態生成 SQL 查詢,更新或刪除語句。以下是一篇簡要的教程,詳細介紹如何使用 MyBatis XML 來編寫動態 SQL。

1. 動態條件查詢

假設有一個 User 實體,有 idusernameemail 字段,我們希望根據不同條件查詢用戶信息。

<!-- 在 Mapper XML 文件中編寫動態 SQL 查詢 -->
<select id="selectUsers" resultType="User">SELECT * FROM users<where><if test="id != null">AND id = #{id}</if><if test="username != null and username != ''">AND username = #{username}</if><if test="email != null and email != ''">AND email = #{email}</if></where>
</select>
  • <where> 標簽用于將動態生成的條件組合到 WHERE 子句中。
  • <if> 標簽根據條件的存在與否來動態生成查詢條件。

上面的方法可以根據id、username、email進行條件查詢,當test后面的語句為true的時候,會將if標簽內的語句拼接。

2. 動態更新語句

假設我們想根據不同的條件更新用戶信息。

<!-- 在 Mapper XML 文件中編寫動態 SQL 更新 -->
<update id="updateUser" parameterType="User">UPDATE users<set><if test="username != null">username = #{username},</if><if test="email != null">email = #{email},</if></set>WHERE id = #{id}
</update>
  • <set> 標簽用于指定要更新的字段。
  • <if> 標簽根據條件動態設置要更新的字段。

3. 動態插入語句

如果要根據不同情況插入不同的字段,也可以使用動態 SQL。

<!-- 在 Mapper XML 文件中編寫動態 SQL 插入 -->
<insert id="insertUser" parameterType="User">INSERT INTO users<trim prefix="(" suffix=")" suffixOverrides=","><if test="id != null">id,</if><if test="username != null and username != ''">username,</if><if test="email != null and email != ''">email,</if></trim><trim prefix="VALUES (" suffix=")" suffixOverrides=","><if test="id != null">#{id},</if><if test="username != null and username != ''">#{username},</if><if test="email != null and email != ''">#{email},</if></trim>
</insert>
  • <trim> 標簽用于動態設置插入的字段和對應的值,當trim標簽內的內容為空時,不會添加前綴。
  • prefixsuffix 屬性用于指定插入語句的前綴和后綴。
  • suffixOverrides 屬性用于去除最后一個不必要的逗號。

4、其他標簽的使用

基礎的語法使用如下所示。choose、when、otherwise 有點像if-else if -else的感覺

<!-- 使用 choose、when、otherwise 標簽實現條件選擇 -->
<select id="getUserByIdOrUsername" resultType="User">SELECT * FROM users<where><choose><when test="id != null">AND id = #{id}</when><when test="username != null and username != ''">AND username = #{username}</when><otherwise>AND 1=1</otherwise></choose></where>
</select><!-- 使用 foreach 標簽進行遍歷操作 -->
<select id="getUsersByIdList" resultType="User">SELECT * FROM usersWHERE id IN<foreach collection="ids" item="id" open="(" separator="," close=")">#{id}</foreach>
</select>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/207553.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/207553.shtml
英文地址,請注明出處:http://en.pswp.cn/news/207553.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

力扣labuladong——一刷day67

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、力扣582.殺掉進程二、力扣536.從字符串生成二叉樹 前言 二叉樹的遞歸分為「遍歷」和「分解問題」兩種思維模式&#xff0c;這道題需要用到「遍歷」的思維模…

麒麟系統進入救援模式或者是crtl D界面排查方法

如出現以下圖片的情況可能需要修復磁盤&#xff1a; V10GFB-desktop&#xff1a; 開機后發現一致卡在此界面&#xff1a; 按esc鍵后有以下報錯信息說明在/etc/fstab里面編寫的外掛磁盤的命令有問題 解決方法如下&#xff1a;進入單用戶模式對/etc/fstab進行修改&#xff1a; …

springboot-mongodb-連接配置

文章目錄 配置Maven依賴URL格式單節點配置示例副本集&#xff08;含連接池配置&#xff09; 配置Maven依賴 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependenc…

智能優化算法應用:基于侏儒貓鼬算法無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用&#xff1a;基于侏儒貓鼬算法無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用&#xff1a;基于侏儒貓鼬算法無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.侏儒貓鼬算法4.實驗參數設定5.算法結果6.參考…

facebook廣告運營技巧

在Facebook上進行廣告運營需要一定的技巧和策略。以下是一些建議&#xff1a; 明確目標&#xff1a;在創建廣告之前&#xff0c;你需要明確你的目標。這可能包括增加品牌知名度、提高網站流量、增加銷售等等。明確目標后&#xff0c;你可以將廣告與這些目標相結合&#xff0c;…

【五分鐘】熟悉python列表和元組的異同點【看這篇夠用!建議收藏】

引言 Python&#xff0c;是一種廣泛應用于數據科學、機器學習等領域的高級編程語言&#xff0c;支持多種豐富多樣的數據類型&#xff0c;其中包括列表和元組。盡管這兩種數據結構都可用于存儲多個值&#xff0c;但它們在功能和特性上存在著明顯的差異。在接下來的博客中&#…

天津大數據培訓機構品牌 數據分析師的發展方向

大數據專業還是有一定難度的&#xff0c;畢竟大數據開發技術所包含的編程技術知識是比較雜且多的如果是計算機專業的學生或者自身有一定基礎的人學&#xff0c;相對來說會比較容易&#xff0c;但對于零基礎小伙伴學習來說&#xff0c;想要學習大數據&#xff0c;難度還是很高的…

3D Web可視化平臺助力Aras開發PLM系統:提供數據訪問、可視化和發布功能

HOOPS中文網慧都科技是HOOPS全套產品中國地區指定授權經銷商&#xff0c;提供3D軟件開發工具HOOPS售賣、試用、中文試用指導服務、中文技術支持。http://techsoft3d.evget.com/ Aras是一個面向數字化工業應用的開放性平臺&#xff0c;幫助世界領先的復雜互聯產品制造商轉變其產…

大三上實訓內容

項目一&#xff1a;爬取天氣預報數據 【內容】 在中國天氣網(http://www.weather.com.cn)中輸入城市的名稱&#xff0c;例如輸入信陽&#xff0c;進入http://www.weather.com.cn/weather1d/101180601.shtml#input 的網頁顯示信陽的天氣預報&#xff0c;其中101180601是信陽的…

SpringCloud面試題——Nacos

一&#xff1a;什么是Nacos&#xff1f; 二&#xff1a;服務心跳與服務注冊原理&#xff1f; 在spring容器啟動的時候&#xff0c;nacos客戶端會進行兩步操作。 向nacos服務端發送心跳向nacos服務端注冊當前服務 服務心跳 客戶端在啟動的時候&#xff0c;會開啟一個心跳線程…

私域運營:掌控用戶,領航變革

隨著互聯網技術的迅速進步&#xff0c;眾多電商平臺如雨后春筍般涌現。盡管淘寶、京東等第三方平臺在流量和銷售額方面占據了絕對優勢&#xff0c;但私域流量運營的興起也引發了廣泛關注。盡管尚處于初級階段&#xff0c;但私域運營已成為當前最熱門的話題之一。 私域運營指的…

HttpComponents: 概述

文章目錄 1. 概述2. 生態位 1. 概述 早期的Java想要實現HTTP客戶端需要借助URL/URLConnection或者自己手動從Socket開始編碼&#xff0c;需要處理大量HTTP協議的具體細節&#xff0c;不但繁瑣還容易出錯。 Apache Commons HttpClient的誕生就是為了解決這個問題&#xff0c;它…

高德地圖畫漸變線

高德地圖畫漸變線&#xff0c;思路是將線和顏色均分為多個小線段和小顏色&#xff0c;實現漸變&#xff0c;類似于下圖。 如果需要多段線&#xff0c;自己循環拼一下就可以了&#xff0c;方法返回多個小線段組成的polyline數組。 /** 高德地圖畫漸變線* author: liyun* params…

【WPS】Excel表格數據透視表

數據少量還好&#xff0c;如果輸數多起來就麻煩了&#xff0c;最近需要匯報一個情況。 描述 譬如&#xff1a;開發&#xff08;80.00%->91.16%&#xff09;&#xff1a;共計43項&#xff08;本周新增1項&#xff09;&#xff0c;本周新增已完成2項&#xff0c;共已完成36項…

wps中將橫軸和縱軸數據互換

wps中將橫軸和縱軸數據互換 今天遇到個比較奇怪的需求, 要把excel數據的橫軸和縱軸互換 在我理解中程序做這種事情應該很簡單的 結果搜索好多教程都是說怎么講圖表xy軸互換 終于找到如何轉表格數據的特此記錄一下 復制需要轉換的內容新建一個sheet選擇性粘貼(CtrlAltV)選擇轉置…

Linux高級系統編程 - 5 管道

復制文件描述符 dup函數 作用 : 文件描述符復制 語法 #include <unistd.h> int dup(int oldfd); 參數 : 所需復制的文件描述符 返回值 復制得到的文件描述符 功能 : 從文件描述符表中 , 尋找一個最小可能的文件描述符&#xff08;通過返回值返回&#xff09;作為…

Java--作用域,構造器,this

作用域基本使用 在Java編程中&#xff0c;主要的變量就是屬性&#xff08;成員變量&#xff09;和局部變量。 我們說的局部變量一般是指在成員方法中定義的變量 Java中作用域的分類 全局變量&#xff1a;也就是屬性&#xff0c;作用域為整個類體 局部變量&#xff1a;也就是除了…

RHEL8_Linux訪問NFS存儲及自動掛載

本章主要介紹NFS客戶端的使用 創建FNS服務器并通過NFS共享一個目錄在客戶端上訪問NFS共享的目錄自動掛載的配置和使用 1.訪問NFS存儲 前面介紹了本地存儲&#xff0c;本章就來介紹如何使用網絡上的存儲設備。NFS即網絡文件系統&#xff0c;所實現的是 Linux 和 Linux 之間的共…

新手搭建知識付費平臺必備攻略:如何以低成本實現高轉化?

我有才知識付費平臺 一、引言 隨著知識經濟的崛起&#xff0c;越來越多的知識提供者希望搭建自己的知識付費平臺。然而&#xff0c;對于新手來說&#xff0c;如何以低成本、高效率地實現這一目標&#xff0c;同時滿足自身需求并提高客戶轉化率&#xff0c;是一大挑戰。本文將…

SPA, SEO, SSR總結

SPA單頁面Web應用 SPA(Single page web application) 單頁面Web應用 Web不再是一張張頁面,而是一個整體的應用,一個由路由系統,數據系統,頁面(組件)系統等等,組成的應用程序, 讓用戶不需要每次與服務器進行頁面刷新來獲得新的內容, 從而提供了更快,跟流暢的用戶體驗, 在SPA中…