mybatis-plus批量操作idea
时间: 2025-04-04 09:04:53 浏览: 38
### 如何在 IntelliJ IDEA 中使用 MyBatis-Plus 进行批量插入
#### 配置 MySQL 支持批量插入
为了实现真正的批量插入,MySQL 数据库本身需要支持单条 SQL 插入多条数据的功能。这可以通过调整 JDBC URL 来启用 `rewriteBatchedStatements` 参数[^1]。
在项目的 `application.yml` 文件中配置如下内容:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&rewriteBatchedStatements=true
username: root
password: your_password
driver-class-name: com.mysql.cj.jdbc.Driver
```
上述配置中的 `rewriteBatchedStatements=true` 是关键参数,它允许 JDBC 将多个 INSERT 语句组合成一个批处理操作[^5]。
---
#### 创建自定义 Mapper 接口
MyBatis-Plus 默认的 `saveBatch` 方法并非真正意义上的批量插入,而是逐条执行 INSERT 语句[^4]。因此,可以创建一个自定义的 Mapper 接口来实现真正的批量插入功能。
在项目中新增一个名为 `EasyBaseMapper` 的接口,并继承 `BaseMapper<T>`:
```java
package com.example.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface EasyBaseMapper<T> extends BaseMapper<T> {
/**
* 自定义批量插入方法
*
* @param entityList 待插入的数据列表
* @return 受影响的行数
*/
Integer insertBatchSomeColumn(List<T> entityList);
}
```
此方法的具体逻辑将在后续通过 SQL 注入器完成[^3]。
---
#### 编写 XML 映射文件
为了让 `insertBatchSomeColumn` 方法生效,需为其编写对应的 XML 映射文件。假设我们有一个实体类 `User`,其字段包括 `id`, `name`, 和 `age`。
在 `resources/mapper` 目录下创建 `EasyBaseMapper.xml` 文件,内容如下:
```xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.EasyBaseMapper">
<!-- 批量插入 -->
<insert id="insertBatchSomeColumn" parameterType="java.util.List">
INSERT INTO user (id, name, age)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.id}, #{item.name}, #{item.age})
</foreach>
</insert>
</mapper>
```
该映射文件的核心在于 `<foreach>` 标签,它可以动态生成多组 `(value1, value2)` 值对,从而实现单条 SQL 插入多条记录的效果。
---
#### 启用分页插件(可选)
如果项目中有分页需求,可以在 Spring Boot 应用启动类中注册 `PaginationInterceptor` 插件:
```java
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyBatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
```
虽然这一部分与批量插入无直接关系,但它属于 MyBatis-Plus 的常用配置之一[^2]。
---
#### 测试批量插入功能
最后,在服务层调用自定义的 `insertBatchSomeColumn` 方法即可完成批量插入操作。例如:
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public void batchInsertUsers(List<User> userList) {
int result = userMapper.insertBatchSomeColumn(userList);
System.out.println("受影响的行数:" + result);
}
}
```
注意:这里的 `UserMapper` 需要继承前面定义的 `EasyBaseMapper` 接口。
---
### 总结
通过以上步骤,可以在 IntelliJ IDEA 中基于 MyBatis-Plus 实现高效的批量插入功能。核心要点包括调整 MySQL 的 JDBC URL、自定义 Mapper 接口及其 XML 映射文件以及合理使用 SQL 注入器。
阅读全文
相关推荐


















