mybatisplus批量插入返回成功数量
时间: 2023-07-30 21:12:36 浏览: 243
根据引用\[1\]中的内容,mybatis-plus的IService接口提供了saveBatch方法来进行批量插入操作。这个方法会一条一条地执行插入操作,效率可能会有一定的瓶颈。根据引用\[2\]中的内容,执行时间在1秒内浮动。所以,mybatis-plus批量插入返回成功数量的具体值取决于插入的数据量和执行的时间。如果数据量较大,建议使用多线程分批处理来提高效率。
#### 引用[.reference_title]
- *1* *2* *3* [Mybatis-Plus批量插入应该怎么用](https://blog.csdn.net/weixin_43847283/article/details/126632026)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
相关问题
mybatisPlus 批量插入返回id
MybatisPlus 批量插入返回 id 的方式有两种:
1. 在实体类中定义一个带有 @TableId 注解的 Long 类型的 id 属性,并且设置该属性的 insertable 属性值为 false,这样在执行批量插入操作时,会自动将数据库生成的 id 填充到该属性中。
2. 在执行批量插入操作时,使用 BatchExecutorType.REUSE 批处理方式,并且将批处理的 StatementType 设置为 StatementType.STATEMENT,这样就可以通过 Statement.getGeneratedKeys() 获取到批量插入的 id 值。
下面是第一种方式的示例代码:
```java
List<User> userList = new ArrayList<>();
userList.add(new User("user1"));
userList.add(new User("user2"));
userList.add(new User("user3"));
userMapper.insertBatchSomeColumn(userList);
for (User user : userList) {
System.out.println(user.getId());
}
```
在该示例中,User 实体类中定义了一个名为 id 的 Long 类型属性,并且带有 @TableId 注解,insertable 属性值设置为 false。在执行批量插入操作后,可以通过遍历 userList 获取到每个 User 对象的 id 值。
注意:第一种方式只适用于自增主键的情况。如果主键不是自增的,则需要使用第二种方式获取 id 值。
mybatisplus批量插入
MybatisPlus提供了一个很方便的方法来实现批量插入操作,即使用`insertBatch`方法。
示例:
```java
List<User> userList = new ArrayList<>();
userList.add(new User("Tom", 18));
userList.add(new User("Jerry", 20));
userList.add(new User("John", 22));
userList.add(new User("Mike", 24));
int result = userMapper.insertBatch(userList);
```
其中,`User`是实体类,`userMapper`是MybatisPlus的Mapper接口。
注意:在实体类中需要使用`@TableId(type = IdType.AUTO)`注解来指定主键生成策略。
此外,需要在MybatisPlus的配置文件中添加批量插入配置:
```xml
<configuration>
<settings>
<setting name="executor_type" value="batch"/>
</settings>
</configuration>
```
这样才能真正实现批量插入操作。
阅读全文