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>

 

猜你喜欢

转载自blog.csdn.net/qq_29726869/article/details/81194570