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即可

相关文章
|
10月前
|
SQL Java 数据库连接
MyBatis 如何执行批量操作?
MyBatis 如何执行批量操作?
48 0
|
5月前
|
XML Java 数据库连接
MyBatis中批量操作foreach与BatchExecutor使用详解
MyBatis中批量操作foreach与BatchExecutor使用详解
103 0
|
9月前
|
SQL Java 数据库连接
深入解析 MyBatis 中的 <foreach>标签:优雅处理批量操作与动态 SQL
在当今的Java应用程序开发中,数据库操作是一个不可或缺的部分。MyBatis作为一款颇受欢迎的持久层框架,为我们提供了一种优雅而高效的方式来管理数据库操作。在MyBatis的众多特性中,`&lt;foreach&gt;`标签无疑是一个强大的工具,它使得在SQL语句中进行动态循环迭代变得轻而易举。本文将带您深入探索MyBatis中的`&lt;foreach&gt;`标签,揭示其背后的原理和用法。
141 0
|
10月前
|
SQL Java 关系型数据库
Mybatis——动态SQL foreach批量操作
Mybatis——动态SQL foreach批量操作
285 0
|
Java
Java神鬼莫测之Mybatis--增删改查CRUD以及批量操作(二)
Java神鬼莫测之Mybatis--增删改查CRUD以及批量操作(二)
121 0
|
2月前
|
SQL Java 数据库连接
挺详细的spring+springmvc+mybatis配置整合|含源代码
挺详细的spring+springmvc+mybatis配置整合|含源代码
49 1
|
2月前
|
druid Java 数据库连接
Spring Boot3整合MyBatis Plus
Spring Boot3整合MyBatis Plus
46 1
|
3天前
|
SQL Java 数据库连接
15:MyBatis对象关系与映射结构-Java Spring
15:MyBatis对象关系与映射结构-Java Spring
18 4
|
6天前
|
XML Java 数据库连接
Spring Boot与MyBatis:整合与实战
【4月更文挑战第29天】在现代的Java Web应用开发中,持久化层框架扮演了至关重要的角色。MyBatis作为一款优秀的持久化框架,被广泛应用于Java开发中。Spring Boot提供了简化开发流程的功能,而与MyBatis的整合也变得更加便捷。
16 0
|
10天前
|
Java 数据库连接 数据库
spring+mybatis_编写一个简单的增删改查接口
spring+mybatis_编写一个简单的增删改查接口
14 2