batch-insert-mybatis-provider

前言

后台开发中,批量往数据库写数据是一个很常见的功能,下面就简单实现一下使用 mybatis-provider 来 batch 写入。

实现介绍
添加依赖

在项目的 pom.xml 中配置 mybatis 及 mysql 相关的依赖

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.46</version>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.0</version>
</dependency>
provider 逻辑实现类

新建一个 provider 类,用于实现 batch insert 的逻辑。

import com.fy.entity.User;

import java.util.List;

/**
 * Description:batch insert 的 provider 实现
 *
 * @author fy
 * @version 1.0
 */
public class UserProvider {

    public String batchInsert(List<User> list) {
        StringBuilder sb = new StringBuilder("INSERT INTO tb_user (id,user_name,user_password," +
                "user_salt,phone,create_user,update_user) VALUES");
        for (int i = 0; i < list.size(); i++) {
            User user = list.get(i);
            if (i > 0) {
                sb.append(",");
            }
            sb.append("(");
            sb.append("'").append(user.getId()).append("',");
            sb.append("'").append(user.getUserName()).append("',");
            sb.append("'").append(user.getUserPassword()).append("',");
            sb.append("'").append(user.getUserSalt()).append("',");
            sb.append("'").append(user.getPhone()).append("',");
            sb.append("'").append(user.getCreateUser()).append("',");
            sb.append("'").append(user.getUpdateUser()).append("'");
            sb.append(")");
        }
        sb.append(";");
        return sb.toString();
    }
}

mapper 接口类

在该表的 mapper 接口类中,绑定上刚刚的 provider。

import com.fy.entity.User;
import com.fy.service.provider.UserProvider;
import org.apache.ibatis.annotations.InsertProvider;

import java.util.List;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author fy
 */
public interface UserMapper {

    /***
     * <p>
     * 批量插入数据,通过 InsertProvider 方式
     * </p>
     * @author fy
     *
     * @param list 数据
     */
    @InsertProvider(type = UserProvider.class, method = "batchInsert")
    void batchInsertByProvider(List<User> list);
}

使用

使用 spring 注入 mapper,然后调用即可。

@Autowired
private UserMapper userMapper;

public void testProviderBatchInsertUser(int count) {
    long t1 = System.currentTimeMillis();
    userMapper.batchInsertByProvider(getUserList(count));
    System.out.println("【UserMapper-provider】插入条数:【" + count + "】耗时:【"
            + (System.currentTimeMillis() - t1) + "】");
}
结语

到此,使用 mybatis-provider 来 batch 写入数据的实现就介绍完了,后续继续其他方式的批量写入 …

如果您看到了这里,欢迎和我沟通交流!
             一个95后码农

个人博客:fy-blog

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Spring Batch项目中集成Mybatis-Plus,需要进行以下步骤: 1. 添加Mybatis-Plus依赖:在pom.xml文件中添加Mybatis-Plus的依赖。 ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>${mybatis-plus.version}</version> </dependency> ``` 2. 配置数据源:在application.properties文件中配置数据源。 ```properties spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=root ``` 3. 配置Mybatis-Plus:在application.properties文件中配置Mybatis-Plus。 ```properties mybatis-plus.mapper-locations=classpath:/mapper/*.xml mybatis-plus.global-config.id-type=auto mybatis-plus.global-config.db-config.logic-delete-value=1 mybatis-plus.global-config.db-config.logic-not-delete-value=0 ``` 4. 创建Mapper接口:创建Mapper接口继承BaseMapper接口。 ```java @Mapper public interface UserMapper extends BaseMapper<User> { } ``` 5. 创建实体类:创建实体类并添加注解。 ```java @Data @TableName("user") public class User implements Serializable { @TableId(type = IdType.AUTO) private Long id; private String name; private Integer age; } ``` 6. 在Spring Batch任务中使用Mapper:在Spring Batch任务中使用Mapper。 ```java @Autowired private UserMapper userMapper; @Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception { List<User> userList = userMapper.selectList(null); // do something with user list return RepeatStatus.FINISHED; } ``` 这样,就可以在Spring Batch项目中集成Mybatis-Plus了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值