mybatis批量分批插入 stream流方式

         if (messageVariableList.size()>0){
                //一次500条
                int applyIdSelectSize = 500;
                int limit = (messageVariableList.size() + applyIdSelectSize - 1) / applyIdSelectSize;
                 //分成limit次发请求到数据库,in()操作时   可以把多条数据分割成多组请求
                Stream.iterate(0, n -> n + 1).limit(limit).forEach(a -> {
                    List<MessageVariable> paperEntityList = messageVariableList.stream().skip(a * applyIdSelectSize).limit(applyIdSelectSize).collect(Collectors.toList());
                    messageVariableMapper.insertMessageVariableAll(paperEntityList);
                });
            }
Mybatis 是一个行的 Java 持久层框架,它支持定制化 SQL、存储过程以及高级映射。Mybatis 本身并没有直接提供对 Java 8 Stream API 的支持,因此批量插入操作通常需要借助 Mybatis 的 SQL 语句和批处理机制来实现。尽管如此,我们可以通过结合 MybatisJava 8 的 Stream API 来实现批量插入。 具体操作步骤如下: 1. 首先,确保你的 Mybatis 映射文件或者注解配置了正确的批量插入的 SQL 语句。这通常涉及到使用 `foreach` 标签来构造 SQL。 2. 接着,在 Java 代码中,你可以使用 Stream API 对需要插入的数据集合进行处理,然后将处理结果传递给 Mybatis批量插入方法。 下面是一个简单的代码示例: ```java // 假设有一个实体类 User 和相应的 Mapper 接口 public interface UserMapper { void insertUsers(List<User> users); } // 在服务层使用 Stream API 进行数据处理并调用 Mybatis 的 Mapper 方法 List<User> userList = ... // 从某个地方获取数据列表 userList.stream().forEach(user -> { // 可以在这里对每个 user 进行预处理 }); userMapper.insertUsers(userList); ``` 在 Mybatis 的映射文件中,你可能需要编写如下所示的批量插入 SQL: ```xml <insert id="insertUsers" parameterType="java.util.List"> INSERT INTO users (id, name, age) VALUES <foreach collection="list" item="user" index="index" separator=","> (#{user.id}, #{user.name}, #{user.age}) </foreach> </insert> ``` 这种方式虽然没有直接使用 Stream API 来实现批量插入,但是通过 Stream API 处理数据后,通过 Mybatis批量操作来完成数据库的批量插入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值