MySQL中的批量修改、插入操作数据库

 更新时间:2023年09月18日 09:48:41   作者:Asurplus  
在平常的项目中,我们会需要批量操作数据库的时候,例如:批量修改,批量插入,那我们不应该使用 for 循环去操作数据库,这样会导致我们反复与数据库发生连接和断开连接,影响性能和增加操作时间,所以可以使用SQL 批量修改的方式去操作数据库,感兴趣的朋友一起学习下吧

在平常的项目中,我们会需要批量操作数据库的时候,例如:批量修改,批量插入,那我们不应该使用 for 循环去操作数据库,这样会导致我们反复与数据库发生连接和断开连接,影响性能和增加操作时间

所以我们可以使用编写 SQL 批量修改的方式去操作数据库

1、批量修改

UPDATE check_order_pl_detail
SET remarks =
CASE
        id
        WHEN 1 THEN '备注1'
        WHEN 2 THEN '备注2'
    END,
    retail_unit_price =
CASE
        id
        WHEN 1 THEN 100
        WHEN 2 THEN 200
    END
WHERE
    id IN ( 1, 2 )

我们去修改 check_order_pl_detail 表时,我们需要根据 id 去修改 remarks 和 retail_unit_price ,我们可以采用 CASE WHEN 的方式,去修改数据

2、批量插入

INSERT INTO user_info_backup ( `name`, age, sex, log_time) 
SELECT
    `name`,
    age,
    sex,
    DATE_SUB( curdate( ), INTERVAL 1 DAY ) AS log_time
FROM
    user_info

当我们在备份 user_info 表的数据时,我们需要将 user_info 的数据查询出来,在插入到 user_info_backup 表中

补充:

mysql 批量新增,修改

<strong>批量新增</strong>
<insert id="insertList">
  insert into sea_user (id, username,`time`)
  values
  <foreach collection="list" item="item" index="index" separator=",">
    (replace(uuid(),"-",""), #{item.username}, #{item.time})
  </foreach>
</insert>

注释

list  传过来的集合对象

item="item"  "item" 遍历的集合中的每个对象
---------------------------------------------------------------------------------------------------------
<strong>新增返回主键id (useGeneratedKeys="true" keyProperty="id")</strong>
<insert id="insert" parameterType="com.mmall.pojo.Shipping" useGeneratedKeys="true" keyProperty="id">
  insert into mmall_shipping (id, user_id, receiver_name, 
    receiver_phone, receiver_mobile, receiver_province, 
    receiver_city, receiver_district, receiver_address, 
    receiver_zip, create_time, update_time
    )
  values (#{id,jdbcType=INTEGER}, #{userId,jdbcType=INTEGER}, #{receiverName,jdbcType=VARCHAR}, 
    #{receiverPhone,jdbcType=VARCHAR}, #{receiverMobile,jdbcType=VARCHAR}, #{receiverProvince,jdbcType=VARCHAR}, 
    #{receiverCity,jdbcType=VARCHAR}, #{receiverDistrict,jdbcType=VARCHAR}, #{receiverAddress,jdbcType=VARCHAR}, 
    #{receiverZip,jdbcType=VARCHAR}, now(), now()
    )
</insert>
---------------------------------------------------------------------------------------------------------
<strong>批量修改
list  - 传过来的数据集合,使用注解
goods_id 表中数据
goodsId 对应的实体类属性
</strong>
<update id="updateBatchStock">
  update
    goods
  set
    goods_stock =
    <foreach collection="list" item="item" index="index" separator=" " open="case goods_id" close="end">
        when #{item.goodsId} then goods_stock - #{item.quantity}
    </foreach>
    ,goods_sales_quantity =
    <foreach collection="list" item="item" index="index" separator=" " open="case goods_id" close="end">
        when #{item.goodsId} then goods_sales_quantity + #{item.quantity}
    </foreach>
    where goods_id in
    <foreach collection="list" index="index" item="item" separator="," open="(" close=")">
        #{item.goodsId}
    </foreach>
</update>

到此这篇关于MySQL中的批量操作(修改,插入)的文章就介绍到这了,更多相关MySQL批量修改内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL事务的ACID特性以及并发问题方案

    MySQL事务的ACID特性以及并发问题方案

    这篇文章主要介绍了MySQL事务的ACID特性以及并发问题方案,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • MySQL表和列的注释总结

    MySQL表和列的注释总结

    在本篇文章里小编给大家分享了关于MySQL表和列的注释相关知识点内容总结,需要的朋友们学习下。
    2019-05-05
  • MySQL中的主键自增机制详情

    MySQL中的主键自增机制详情

    这篇文章主要介绍了MySQL中的主键自增机制详情,MySQL提供了主键自增机制AUTO_INCREMENT. 对主键使用, 保证了主键的唯一性,下文详细介绍需要的小伙伴可以参考一下
    2022-08-08
  • mysql根据json字段内容作为查询条件(包括json数组)检索数据

    mysql根据json字段内容作为查询条件(包括json数组)检索数据

    本文主要介绍了mysql根据json字段内容作为查询条件(包括json数组)检索数据,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • MySQL8.0.28安装教程详细图解(windows 64位)

    MySQL8.0.28安装教程详细图解(windows 64位)

    如果电脑上已经有MySQL数据库再进行重做往往会遇到问题,下面这篇文章主要给大家介绍了关于windows 64位系统下MySQL8.0.28安装教程的详细教程,文章通过图文介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • mac下重置mysl8.0.11密码的方法

    mac下重置mysl8.0.11密码的方法

    mac下安装mysql8.0.11时要求输入密码之后想修改密码。接下来通过本文给大家介绍mac下重置mysl8.0.11密码的方法,需要的朋友可以参考下
    2018-06-06
  • MHA实现mysql主从数据库手动切换的方法

    MHA实现mysql主从数据库手动切换的方法

    这篇文章主要介绍了MHA实现mysql主从数据库手动切换的方法,详细的讲述了主从数据库切换的步骤与方法,非常实用,需要的朋友可以参考下
    2014-10-10
  • Mysql事物锁等待超时Lock wait timeout exceeded;的解决

    Mysql事物锁等待超时Lock wait timeout exceeded;的解决

    本文主要介绍了Mysql事物锁等待超时Lock wait timeout exceeded;的解决,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • ubuntu 16.04下mysql5.7.17开放远程3306端口

    ubuntu 16.04下mysql5.7.17开放远程3306端口

    这篇文章主要介绍了ubuntu 16.04下mysql5.7.17开放远程3306端口的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • MySQL中实现动态表单中JSON元素精准匹配的方法示例

    MySQL中实现动态表单中JSON元素精准匹配的方法示例

    本文主要介绍了MySQL中实现动态表单中JSON元素精准匹配的方法示例,重点讲解如何在将设计好的动态表单信息进行提取,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07

最新评论