日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

in ms sql 集合参数传递_mybatis从入门到精通,第三篇《动态SQL》,干货满满

發布時間:2025/3/11 数据库 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 in ms sql 集合参数传递_mybatis从入门到精通,第三篇《动态SQL》,干货满满 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

動態 SQL 是 MyBatis 的強大特性之一。如果你使用過 JDBC 或其它類似的框架,你應該能理解根據不同條件拼接 SQL 語句有多痛苦,例如拼接時要確保不能忘記添加必要的空格,還要注意去掉列表最后一個列名的逗號。利用動態 SQL,可以徹底擺脫這種痛苦。使用動態 SQL 并非一件易事,但借助可用于任何 SQL 映射語句中的強大的動態 SQL 語言,MyBatis 顯著地提升了這一特性的易用性。

第①種場景:動態SQL之-if語句

if 標簽通常用于 where語句、update語句、insert語句中,通過判斷參數值來決定是否使用某個查詢條件、判斷是否更新某一個字段、判斷是否插入某個字段的值。

select * from emp comm is NULL and comm = #{comm} and job = #{job}

注明:where 元素只會在子元素返回任何內容的情況下才插入 “where” 子句。而且,若子句的開頭為 “and” 或 “or”,where 元素也會將它們去除。

第②種場景:動態SQL之-choose(when,otherwise) 語句

有時候,我們不想使用所有的條件,而只是想從多個條件中選擇一個使用。針對這種情況,MyBatis 提供了 choose 元素,它有點像 Java 中的 switch 語句。

select * from emp job = #{job} comm = #{comm} ename = #{ename}

第③種場景:動態SQL之-if+set 語句

set 元素可以用于動態包含需要更新的列,忽略其它不更新的列。比如:

update emp ename=#{ename}, job=#{job}, sal=#{sal}, comm=#{comm} where empno=#{empno}

這個例子中,set 元素會動態地在行首插入 SET 關鍵字,并會刪掉額外的逗號(這些逗號是在使用條件語句給列賦值時引入的)。

第④種場景:動態SQL之-foreach語句

動態 SQL 的另一個常見使用場景是對集合進行遍歷(尤其是在構建 IN 條件語句的時候)。比如:

delete from emp where empno in #{empno} EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);List empnos = new ArrayList();empnos.add(7369);empnos.add(7654);empnos.add(7698);int result = empMapper.delEmp(empnos);

foreach 元素的功能非常強大,它允許你指定一個集合,聲明可以在元素體內使用的集合項(item)和索引(index)變量。它也允許你指定開頭與結尾的字符串以及集合項迭代之間的分隔符。這個元素也不會錯誤地添加多余的分隔符,看它多智能!

提示 你可以將任何可迭代對象(如 List、Set 等)、Map 對象或者數組對象作為集合參數傳遞給 foreach。當使用可迭代對象或者數組時,index 是當前迭代的序號,item 的值是本次迭代獲取到的元素。當使用 Map 對象(或者 Map.Entry 對象的集合)時,index 是鍵,item 是值。

第⑤種場景:動態SQL之-trim語句

trim標記是一個格式化的標記,可以完成set或者是where標記的功能

select * from emp and comm is NULL and comm = #{comm} and job = #{job}

第⑥種場景:動態SQL之-SQL片段

有時候可能某個 sql 語句我們用的特別多,為了增加代碼的重用性,簡化代碼,我們需要將這些代碼抽取出來,然后使用時直接調用。比如:假如我們需要經常根據用戶名和性別來進行聯合查詢,那么我們就把這個代碼抽取出來,如下:

and ename = #{ename} and job = #{job}

引用 sql 片段

select * from emp 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的in ms sql 集合参数传递_mybatis从入门到精通,第三篇《动态SQL》,干货满满的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。