for循环中循环一次提交一次 insert update 关闭事务 spring springboot mybatis

这篇具有很好参考价值的文章主要介绍了for循环中循环一次提交一次 insert update 关闭事务 spring springboot mybatis。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

省流:

 在方法上直接加如下注解:

@Transactional(propagation = Propagation.NOT_SUPPORTED)
public void t1(){
    //业务代码
}

正文:

在测试的时候,有时候会希望在for循环中,代码循环一次就提交一次事务。

方法一: 

最简单的方式,就是关闭事务,不需要事务。添加注解如下:

@Transactional(propagation = Propagation.NOT_SUPPORTED)
public void t1(){
    //业务代码
}

方法二:

如果说是真的在生产上有这样的需要,每循环一次就提交事务,那就需要手动控制事务了。

需要这几行代码:

            DefaultTransactionDefinition dt = new DefaultTransactionDefinition();
            dt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
            TransactionStatus status = platformTransactionManager.getTransaction(dt);
            platformTransactionManager.commit(status);

用法如下: 

    @Autowired
    private PlatformTransactionManager platformTransactionManager;
    
    @Test
    public void t1(){
        for(int i=0; i<list.size(); i++){
            DefaultTransactionDefinition dt = new DefaultTransactionDefinition();
            dt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
            TransactionStatus status = platformTransactionManager.getTransaction(dt);
            mapper.select(o);
            mapper.insert(o);
            platformTransactionManager.commit(status);
        }
    }

具体解读请前往以下两篇文章:

Transactional的7种Propagation:

spring springboot mybatis 事务配置 Transactional的Propagation 开启事务 关闭事务_globalcoding的博客 

开启和关闭事务时sqlsession创建机制,手动控制事务时sqlsession 创建机制:

spring springboot mybatis transaction 开启事务 关闭事务 不使用事务_globalcoding的博客 

=====================分割线========================= 

文章到此已经结束,以下是紫薯补丁

@Transactional(propagation = Propagation.NOT_SUPPORTED)
public void t1(){
    //业务代码
}

    @Autowired
    private PlatformTransactionManager platformTransactionManager;
    
    @Test
    public void t1(){
        for(int i=0; i<list.size(); i++){
            DefaultTransactionDefinition dt = new DefaultTransactionDefinition();
            dt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
            TransactionStatus status = platformTransactionManager.getTransaction(dt);
            mapper.select(o);
            mapper.insert(o);
            platformTransactionManager.commit(status);
        }
    }文章来源地址https://www.toymoban.com/news/detail-722012.html

到了这里,关于for循环中循环一次提交一次 insert update 关闭事务 spring springboot mybatis的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FieldFill.INSERT与FieldFill.UPDATE使用

    首先在bean对象的class里面对应字段上面加上 或者 如果需要同时指定新增和修改 则添加 然后添加下配置类

    2024年02月16日
    浏览(43)
  • Mybatis的<insert>,<update>,<delete>标签用法

    之前对mybatis的select标签以及其他相关标签做了讲解,很多标签也是可以拿到增删改的标签中来用的,下面先说下insert标签的用法: insert 标签顾名思义就是插入语句,用于将数据插入到数据库中,一般插入标签没有返回值,传入一个实体对象的数据,一般不对插入的数据做判断

    2024年02月07日
    浏览(37)
  • SpringBoot中使用@Insert、@Update实现批量新增、更新

    数据库原始表数据 数据层接口 注意 : @Param(“list”) 引号中和foreach 中 collection 属性值必须写list,否则报错。item属性值写实体类的类名,首字母必须小写 接口测试: 由于在Apifox中是没有对应List的数据类型因此需要我们自己手写body形式 – json例如: 除了使用接口测试工具验证

    2024年02月09日
    浏览(45)
  • SQL注入_insert&delete&update&selete

    一. SQL注入介绍 1.1 sql注入概念 1.1.1 sql注入的实质:数据库将用户输入的数据当作代码执行 1.1.2 sql注入产生的条件 用户能控制输入 原本程序要执行的代码,拼接了用户输入的数据然后进行执行 1.2 sql注入注入点判断 1.2.1 判断是否存在可控变量 抓包判断 如图所示,id=1与subm

    2023年04月16日
    浏览(35)
  • spring工程的启动流程?bean的生命周期?提供哪些扩展点?管理事务?解决循环依赖问题的?事务传播行为有哪些?

    Spring工程的启动流程主要包括以下几个步骤: 加载配置文件:Spring会读取配置文件(如XML配置文件或注解配置)来获取应用程序的配置信息。 实例化并初始化IoC容器:Spring会创建并初始化IoC容器,即ApplicationContext。在这一步,Spring会解析配置文件,并将配置的Bean实例化。

    2024年02月12日
    浏览(36)
  • C++_linux下_非阻塞键盘控制_程序暂停和继续/for循环每隔2s执行一次

    在程序执行过程中,点击键盘p按键(pause), 程序暂停, 点击键盘上的n按键(next),程序继续执行 可以使用opencv中相关函数简单实现: 空格键暂停, 其它任意键继续: 参考: linux下实现键盘的无阻塞输入_fd_zero(rfds);-CSDN博客 拓展: 每隔1秒,for 循环执行一次: 参考: select()  fd_set 原理介绍

    2024年02月03日
    浏览(33)
  • 【SpringBoot】Mybatis执行insert/update后如何获得主键id

    在业务开发的时候,由于MyBatis框架的insert语句默认是不返回记录的主键值,而是返回插入的记录条数的,但是如果业务层需要得到插入数据的主键时候,可以通过配置的方式来实现获取插入数据的ID功能。 方法1、开启useGeneratedKeys属性方法 方法2、使用selectKey和 order=\\\"AFTER\\\"方式

    2024年02月11日
    浏览(40)
  • MySQL修炼手册7:数据修改基础:INSERT、UPDATE、DELETE语句详解

    在掌握了MySQL数据库的基础之后,学习如何对数据进行有效的修改是至关重要的。本篇博客旨在提供一个深入的指南,涵盖了数据修改的三大基础操作:插入(INSERT)、更新(UPDATE)、删除(DELETE)。为了更好地理解这些概念,我们首先创建一个示例表“水果表”,然后逐一

    2024年01月17日
    浏览(74)
  • myBatis plus 调用基本方法(insert update.... ) Invalid bound statement (not found)

    直接调用BaseMapper 或者 是Iservice 里面的方法报如下错,大概率是依赖版本冲突 我的依赖版本如下,解决了这个问题 “org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)” 错误通常表示在 MyBatis 中找不到有效的绑定语句。 这个错误可能有以下几个可能的原因: SQL

    2024年02月13日
    浏览(56)
  • 5、hive的load、insert、事务表使用详解及示例

    1、apache-hive-3.1.2简介及部署(三种部署方式-内嵌模式、本地模式和远程模式)及验证详解 2、hive相关概念详解–架构、读写文件机制、数据存储 3、hive的使用示例详解-建表、数据类型详解、内部外部表、分区表、分桶表 4、hive的使用示例详解-事务表、视图、物化视图、DDL

    2024年02月09日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包