mybatis整合mySql的一些常用批量操作

基础数据准备:

<sql id="entityColumnList"> 
     `ID`, NAME,PHONE,IS_DELETED
</sql>

1.批量插入

<insert id="insertBatch">
INSERT INTO
test.`t_TEST`
(
<include refid="entityColumnList" />
)
VALUES
<foreach collection="list" item= "item" index ="index" separator=",">
(
#{ item.id },
#{ item.name},
#{ item.phone}
)
</foreach >
</insert>

2.批量更新

     1) 推荐使用       

<update id="updateBatch">
UPDATE
test.`t_TEST`
<trim prefix="set" suffixOverrides=",">
<trim prefix="NAME= case" suffix="end,">
<foreach collection="list" item="item" index="index">
WHEN (
`IS_DELETED`=0
AND `ID` = #{ item.id }
)
THEN #{item.name}
</foreach>
</trim>
<trim prefix="PHONE= case" suffix="end,">
<foreach collection="list" item="item" index="index">
WHEN (
`IS_DELETED`=0
AND `ID` = #{ item.id }
)
THEN #{item.phone}
</foreach>
</trim>
WHERE
<foreach collection="list" item="item" index="index" separator="or">
(
`IS_DELETED`=0
AND `ID` = #{ item.id }
)
</foreach>
</update>

2)

<update id="updateBatch">
<foreach collection="list" item="item" index="index" separator=";">
UPDATE
test.`t_TEST`
SET
`NAME`=#{ item.name },
WHERE
`IS_DELETED`=0
AND `ID`=#{item.id}
</foreach>
</update>

   3.根据某个列表批量查询

SELECT
< include refid = "entityColumnList" />
FROM
 test.`t_TEST`
WHERE
`IS_DELETED` = 0
<IF test = "request.nameList!= null and request.nameList.size()>0" >
AND NAME IN
< foreach collection = "request.nameList" item = "name" INDEX = "index" OPEN = "(" CLOSE = ")" SEPARATOR = "," >
#{name}
</ foreach >
</IF >

4.数据库直接插入查询出的数据:

INSERT INTO   test.`t_TEST_COPY`
(
`ID`,
`NAME`,
`PHONE`
)
SELECT
RIGHT (UUID_SHORT(), 10) ID,
` t`.NAME AS `NAME`,
` t`.`PHONE` AS `PHONE`
FROM
test.`t_TEST` t
WHERE
(`t`.`IS_DELETED` = 0)
UNION ALL
SELECT
RIGHT (UUID_SHORT(), 10) ID,
`mcr`.`NAME` AS `NAME`,
`mcr`.`PHONE` AS `PHONE`
FROM
test.`t_TEST_1` t1
WHERE
(`t1`.`IS_DELETED` = 0)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值