Mybatis执行多条语句/批量更新方式

 更新时间:2023年03月31日 09:16:02   作者:WINGZINGLIU  
这篇文章主要介绍了Mybatis执行多条语句/批量更新方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Mybatis执行多条语句/批量更新

Mybatis实现多条语句

通常用在删除主表信息同时删除子表信息。

如果利用多次Dao进行执行sql,程序就写起来麻烦并且阅读难度会提升。

(删除income表中的信息,同时删除子表income_detail表中的相关信息)

delete from income_detail where income_id=#{id}; 
delete from income where id=#{id};

或者是批量更新,比如利用foreach批量update多条数据。

<update id="update">
    <foreach collection="xxList" item="item" index="index" open="" close="" separator=";">
      update t_xxx
      <set>
        xxx = #{item.xxx}
      </set>
      where id = #{item.id}
    </foreach>
</update>

这些语句的类似点在于都是在mybatis中带有分号的多条sql。

而直接执行又会报错,所以我们需要在jdbc连接中加上allowMultiQueries参数,设置为true。

<property name="url" value="jdbc:mysql://localhost:3306/amoeba?characterEncoding=UTF-8&allowMultiQueries=true"/>
jdbc.url=jdbc:mysql://localhost:3306/amoeba?characterEncoding=UTF-8&allowMultiQueries=true

Mybatis同时执行多条语句

有个常见的场景:删除用户的时候需要先删除用户的外键关联数据,否则会触发规则报错。

解决办法不外乎有三个

  • 1、多条sql分批执行
  • 2、存储过程或函数调用
  • 3、sql批量执行

今天我要说的是MyBatis中如何一次执行多条语句(使用mysql数据库)。

1、修改数据库连接参数加上allowMultiQueries=true,如:

hikariConfig.security.jdbcUrl=jdbc:mysql://xx.xx.xx:3306/xxxxx?characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false&allowMultiQueries=true

2、直接写多条语句,用“;”隔开即可

<delete id="deleteUserById" parameterType="String">
    delete from sec_user_role where userId=#{id};
    delete from sec_user where id=#{id};
</delete>

仅此而已!!!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java8的Lambda表达式你真的会吗

    Java8的Lambda表达式你真的会吗

    这篇文章主要介绍了Java8的Lambda表达式你真的会吗,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Spring Boot中KafkaListener的介绍、原理和使用方法案例详解

    Spring Boot中KafkaListener的介绍、原理和使用方法案例详解

    本文介绍了Spring Boot中 @KafkaListener 注解的介绍、原理和使用方法,通过本文的介绍,我们希望读者能够更好地理解Spring Boot中 @KafkaListener 注解的使用方法,并在项目中更加灵活地应用
    2023-09-09
  • Java异常详解_动力节点Java学院整理

    Java异常详解_动力节点Java学院整理

    异常是Java语言中的一部分,它代表程序中由各种原因引起的“不正常”因素。下面通过本文给大家介绍java异常的相关知识,感兴趣的朋友一起看看吧
    2017-06-06
  • 详细解读AbstractStringBuilder类源码

    详细解读AbstractStringBuilder类源码

    这篇文章主要介绍了详细解读AbstractStringBuilder类源码,具有一定参考价值,需要的朋友可以了解下。
    2017-12-12
  • 基于Spring5实现登录注册功能

    基于Spring5实现登录注册功能

    这篇文章主要为大家详细介绍了基于Spring5实现登录注册功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • 基于java计算买卖股票的最佳时机

    基于java计算买卖股票的最佳时机

    这篇文章主要介绍了基于java计算买卖股票的最佳时机,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Java数组的初始化方法详解

    Java数组的初始化方法详解

    在Java程序开发中,数组是一个非常常用的数据类型,数组的初始化是使用数组来存储和处理数据的关键步骤之一,但是,关于Java数组的初始化,经常会让人感到迷惑,本文将详细介绍Java数组的初始化方法,帮助读者从此告别关于Java数组初始化的困惑
    2023-11-11
  • springboot注册bean的三种方法

    springboot注册bean的三种方法

    这篇文章主要介绍了springboot注册bean的三种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • 如何把JAR发布到maven中央仓库的几种方法

    如何把JAR发布到maven中央仓库的几种方法

    这篇文章主要介绍了如何把JAR发布到maven中央仓库的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • springboot如何为web层添加统一请求前缀

    springboot如何为web层添加统一请求前缀

    这篇文章主要介绍了springboot如何为web层添加统一请求前缀,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02

最新评论