mybatis一条sql批量操作多条记录

Mybatis3 一条sql批量操作多条记录

 

  1. 案例1

查询多个id的记录的所有信息

概述

查询id10001,10002,10003,10004,10005的记录的所有信息

前端传参

Json:{“IDlist”:”[10001,10002,10003,10004,10005]”}

后端处理

jsonIDlist对象转成jsonArray

List list = jsonObject.getJSONArray("IDlist");

遍历list结果

10001

10002

10003

10004

10005

编写mapper.xml (查询equi)

<select id="selectPostIn" parameterType="java.util.List" resultType="com.alibaba.fastjson.JSONObject">
    SELECT *
   
FROM equi w
    WHERE w.id in
    <
foreach item="item" index="index" collection="list"
            
open="(" separator="," close=")">
        #{item} 
    </
foreach>
</select>

 

 

  1. 案例2

修改多个id记录的某个字段的状态(每条记录修改的状态都相同)

概述:

修改id10001,10002,10003,10004,10005的记录的status状态值为2

前端传参

Json:{“IDlist”:”[10001,10002,10003,10004,10005]”}

后端处理

List list = jsonObject.getJSONArray("IDlist");

遍历list结果

10001

10002

10003

10004

10005

编写mapper.xml (查询equi)

<update id="batchUpdate" parameterType="java.util.List">
    update equi w
    SET
    w.equi_status = '
2'
    where w.id in
    <
foreach item="item" index="index" collection="list"
            
open="(" separator="," close=")">
        #{item}
    </
foreach>
</update>

 

 

  1. 案例3

修改多个id记录的某个字段的值(每条记录修改的值都不同)

概述

修改id10001,10002,10003,10004,10005的记录的num(num减去本次修改的值)

前端传参

{"list":"[{id:10002,num:3},{id:10003,num:4},{id:10005,num:1}]"}

后端处理

List list = jsonObject.getJSONArray("IDlist");

遍历list结果

{"num":3,"id”:10002}

{"num":4,"id”:10003}

{"num":1,"id”:10005}

编写mapper.xml (查询equi)

<update id="batchUpdate2" parameterType="java.util.List">
    update equi w
    set  w.equi_num =
    <
foreach collection="list" item="item" index="index"
            
separator=" " open="case ID" close="end">
        when #{item.id} then w.equi_num - #{item.num}
    </
foreach>
    where w.id in
    <
foreach collection="list" index="index" item="item"
            
separator="," open="(" close=")">
        #{item.id}
    </
foreach>
</update>

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值