mybatis判断批量操作是否全部执行成功

简介: mybatis判断批量操作是否全部执行成功


报纸是这个世界的镜子。——埃利斯

例如这样的代码:

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.ExecutorType;
import java.util.List;
import org.apache.ibatis.executor.BatchResult;
public class BatchOperationExample {
    public boolean checkAllBatchResultsSuccessful(List<BatchResult> batchResults) {
        for (BatchResult result : batchResults) {
            int[] updateCounts = result.getUpdateCounts();
            for (int count : updateCounts) {
                if (count <= 0) {  // 根据实际情况选择判断条件,有些情况下可能需要 count == 0
                    return false;  // 如果任何一个操作没有成功更新,则返回失败
                }
            }
        }
        return true;  // 所有操作都成功更新
    }
    public static void main(String[] args) {
        SqlSession sqlSession = null;
        try {
            sqlSession = MyBatisUtil.getSqlSession(ExecutorType.BATCH);
            // 假设有一个Mapper接口和对应的操作,例如:
            // UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            // 执行批处理操作,例如:
            // mapper.insertUser(user1);
            // mapper.insertUser(user2);
            // ... 执行更多的批处理操作 ...
            sqlSession.commit();
            List<BatchResult> batchResults = sqlSession.flushStatements();
            BatchOperationExample example = new BatchOperationExample();
            boolean allSuccess = example.checkAllBatchResultsSuccessful(batchResults);
            System.out.println("All batch operations successful: " + allSuccess);
        } catch (Exception e) {
            sqlSession.rollback();
            e.printStackTrace();
        } finally {
            if (sqlSession != null) {
                sqlSession.close();
            }
        }
    }
}

不过也可以用Stream流的写法

batchResults.stream().flatMapToInt(r-> IntStream.of(r.getUpdateCounts())).allMatch(i->i>0);

核心就一点,就是注意每一个getUpdateCounts都大于0即可

相关文章
|
SQL Java 数据库连接
MyBatis 如何执行批量操作?
MyBatis 如何执行批量操作?
216 0
|
XML Java 数据库连接
MyBatis中批量操作foreach与BatchExecutor使用详解
MyBatis中批量操作foreach与BatchExecutor使用详解
1878 0
|
SQL Java 数据库连接
深入解析 MyBatis 中的 <foreach>标签:优雅处理批量操作与动态 SQL
在当今的Java应用程序开发中,数据库操作是一个不可或缺的部分。MyBatis作为一款颇受欢迎的持久层框架,为我们提供了一种优雅而高效的方式来管理数据库操作。在MyBatis的众多特性中,`&lt;foreach&gt;`标签无疑是一个强大的工具,它使得在SQL语句中进行动态循环迭代变得轻而易举。本文将带您深入探索MyBatis中的`&lt;foreach&gt;`标签,揭示其背后的原理和用法。
484 0
|
SQL Java 关系型数据库
Mybatis——动态SQL foreach批量操作
Mybatis——动态SQL foreach批量操作
1403 0
|
Java
Java神鬼莫测之Mybatis--增删改查CRUD以及批量操作(二)
Java神鬼莫测之Mybatis--增删改查CRUD以及批量操作(二)
226 0
|
6月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
1208 1
Spring boot 使用mybatis generator 自动生成代码插件
|
9月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
774 0
|
11月前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
558 2
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
640 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
592 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块