批量刪除操作具體實現


2019-08-01

說到批量刪除,就得先介紹一下mybatis 中 foreach collection的三種用法,這可以幫助我們快速實現批量處理數據的操作,不僅僅是批量刪除,當然在這里我只介紹批量刪除操作,其他情況下的操作原理相同。

mybatis 中 foreach collection的三種用法

foreach元素的屬性主要有 item,index,collection,open,separator,close。

1 item表示集合中每一個元素進行迭代時的別名,具體說明:在 list 和數組中是其中的對象,在 map 中是 value,該參數為必選。 2 index指 定一個名字,用於表示在迭代過程中,每次迭代到的位置,在 list 和數組中,index 是元素的序號;在 map 中,index 是元素的 key。 3 open表示該語句以什么開始, 4 separator表示在每次進行迭代之間以什么符號作為分隔符, 5 close表示以什么結束。

在使用foreach的時候最關鍵的也是最容易出錯的就是collection屬性,該屬性是必須指定的,但是在不同情況 下,該屬性的值是不一樣的,主要有一下3種情況:

1 如果傳入的是單參數且參數類型是一個List的時候,collection屬性值為list集合類型 2 如果傳入的是單參數且參數類型是一個array數組的時候,collection的屬性值為array數組類型 3 如果傳入的參數是多個的時候,我們就需要把它們封裝成一個Map了,當然單參數也可

注意:上述所說的參數的屬性值和相對應的mapper文件中的參數時一致的。

下面看看具體代碼示例:

單參數array數組類型:

mapper.xml層代碼:

1 <delete id="deleteRoster" parameterType="com.example.pojo.Roster">
2        delete from roster where mobile in 
3        <foreach collection="mobiles" index="index" item="mobile" 
4                 open="(" separator="," close=")">
5             #{mobile}
6         </foreach>
7 </delete>

此處的collection中的屬性值和mapper.java中的傳入參數一致。

另外注意item中的屬性值可以和contorller接收到的參數名稱不一樣,在這里僅僅是一個別名,但是item中的屬性值要和#{}中的保持一致,切記。

index具體在這里的作用不是太重要,不過還是加上吧!

mapper層代碼:

1 void deleteRoster(String[] mobiles)

serviceImpl層代碼:

1 @Override
2 public void deleteRoster(String[] mobiles) {
3     rosterMapper.deleteRoster(mobiles);    
4 }

Roster實體類代碼:

1 其他屬性值省略。
2 private String mobile;   //手機號
3 private String[] mobiles;   //根據手機號進行批量刪除的手機號數組
4 get,set省略。

controller層代碼:

1 @PostMapping("/roster/delete")
2 public Result<String> deleteRoster(@RequestBody Roster roster) {    //Roster是一個實體類,其中包含需要要String[] mobiles
3         try {
4            rosterService.deleteRoster(roster.getMobiles(), roster.getCustomerId());
5             return new Result<String>(OperateEnum.OPERATE_OK.getOperateStatus(), "刪除成功", null);
6         } catch (Exception e) {
7             return new Result<String>(OperateEnum.OPERATE_FAIL.getOperateStatus(), "操作失敗", null);
8         }
9 }

前台需要傳遞的數據類型及格式:(一定注意發送格式和接收解析的格式,否則會解析不出來)

1 發送請求數據類型格式: 2 {"mobiles":["157576651","15724367546",“15737756576”]} 3 發送請求內容編碼格類型:Content-type:application/json;Charset:UTF-8
4 請求方式:post請求

在這里知識介紹了單參數array數組類型的方式,不過單參數List集合類型的用法和數組類型相似,無非就是從前台傳過來的數據類型一個是

數組類型,一個是集合類型,根據自己的情況進行選擇;對於多參數的情況目前未使用過,后續使用會進行補充。

看了以上解答還有不懂得歡迎留言評論,會第一時間進行解答。感謝大家支持!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM