MybatisPlus实现insertBatchSomeColumn进行批量增加

1、引入相关依赖

        <!--mybatis-plus启动器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
                <!--mybatis-plus扩展插件依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-extension</artifactId>
            <version>3.5.1</version>
        </dependency>

2、编写sql注入器

package com.linmain.mysql.config;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn;

import java.util.List;

/**
 * @Author linzhuoqi
 * @Date 2023/3/10
 * @Eamil 1580752420@qq.com
 * @Version
 * @Description    自定义的sql注入器,插入了批量插入的方法
 */
public class EasySqlInjector extends DefaultSqlInjector {
    @Override
    public List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {

        // 注意:此SQL注入器继承了DefaultSqlInjector(默认注入器),调用了DefaultSqlInjector的getMethodList方法,保留了mybatis-plus的自带方法
        List<AbstractMethod> methodList = super.getMethodList(mapperClass, tableInfo);
        //增加了一个批量插入的方法
        methodList.add(new InsertBatchSomeColumn(i -> i.getFieldFill() != FieldFill.UPDATE));
        return methodList;
    }
}

3、在mybatisPlus的配置类中注入插件

@Configuration
public class MyBatisPlusConfig {
 
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //添加分页插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        //添加乐观锁插件
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return interceptor;
    }
 
    @Bean
    public EasySqlInjector easySqlInjector() {
        return new EasySqlInjector();
    }
 
}

4、编写dao层接口

package com.linmain.column.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.linmain.column.pojo.entity.ColTag;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

/**
 * 专栏标签(ColTag)表数据库访问层
 *
 * @Author linzhuoqi
 * @Date 2023-03-02 20:44:38
 * @Eamil 1580752420@qq.com
 * @Version
 * @Description
 */
@Mapper
public interface ColTagDao extends BaseMapper<ColTag> {
    /**
     * 批量插入 仅适用于mysql
     *
     * @param entityList 实体列表
     * @return 影响行数
     */
    Integer insertBatchSomeColumn(Collection<ColTag> entityList);
}

5、最后

进行正常的使用即可

        colTagDao.insertBatchSomeColumn(colTags);
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Mybatis-Plus提供了`insertBatchSomeColumn`方法来实现批量插入并指定插入的列,同时点击房间也支持Mybatis-Plus进行操作。 首先需要在pom.xml文件中引入Mybatis-Plus和ClickHouse的依赖: ```xml <!-- Mybatis-Plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency> <!-- ClickHouse --> <dependency> <groupId>ru.yandex.clickhouse</groupId> <artifactId>clickhouse-jdbc</artifactId> <version>0.2.6</version> </dependency> ``` 然后创建一个Mapper接口,并使用`@Mapper`注解标记该接口: ```java @Mapper public interface ClickHouseMapper extends BaseMapper<ClickHouseEntity> { void batchInsert(List<ClickHouseEntity> list); } ``` 其中`ClickHouseEntity`是ClickHouse表对应的实体类,`batchInsert`方法用于批量插入数据。 最后在服务类中调用`insertBatchSomeColumn`方法进行批量插入: ```java @Service public class ClickHouseService { @Autowired private ClickHouseMapper clickHouseMapper; public void batchInsert(List<ClickHouseEntity> list) { clickHouseMapper.batchInsert(list); } public void insertBatchSomeColumn(List<ClickHouseEntity> list) { // 指定插入的列 List<String> columnList = Arrays.asList("column1", "column2", "column3"); clickHouseMapper.insertBatchSomeColumn(list, columnList); } } ``` 其中`insertBatchSomeColumn`方法第一个参数为要插入的数据列表,第二个参数为要插入的列名列表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值