SpringBoot Mybatis 批量插入 ClickHouse 接口实现

SpringBoot Mybatis 批量插入 ClickHouse 接口实现

  1. 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="cn.ac.iie.mapper.AuditInfoMapper">
          <insert id="insertAudit" parameterType="cn.ac.iie.audit.entity.Audit" useGeneratedKeys="false">
            INSERT INTO audit
            (insertDate,dateTime, userType, clientIp,pid, msg, acct, exe, hostname, addr, terminal, res)
            VALUES
            <foreach collection="audits" item="Audit" index="index" separator=",">
                (#{Audit.insertDate,jdbcType=DATE},#{Audit.dateTime,jdbcType=DATE}, #{Audit.userType,jdbcType=VARCHAR},
                #{Audit.clientIp,jdbcType=VARCHAR}, #{Audit.pid,jdbcType=VARCHAR},
                #{Audit.msg,jdbcType=VARCHAR}, #{Audit.acct,jdbcType=VARCHAR}, #{Audit.exe,jdbcType=VARCHAR},
                #{Audit.hostname,jdbcType=VARCHAR}, #{Audit.addr,jdbcType=VARCHAR}, #{Audit.terminal,jdbcType=VARCHAR},
                #{Audit.res,jdbcType=VARCHAR})
            </foreach>
        </insert>
       
    

    友情提示:使用IDEA不能再xml里面的Insert、Select等Sql语句里面注释,注释会报如下错误

    Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'Audit' not found. Available parameters are [audits, param1]] with root cause
    

    image-20220809134959403

    这个问题找了各种方法都没有解决,最后把注释的部分删除就好了。

  2. mapper层

    @Mapper
    public interface AuditInfoMapper extends BaseMapper<Audit> {
    
        int insertAudit(@Param("audits") List<Audit> audits);
    
    }
    
  3. service

    # service 接口
    public interface AuditService extends IService<Audit> {
        int insertAudit(List<Audit>  auditInfo);
    
    }
    
    # serviceimpl 实现
        
        @Service
    @Slf4j
    public class AuditServiceImpl extends ServiceImpl<AuditInfoMapper, Audit> implements AuditService {
        @Autowired
        AuditInfoMapper auditInfoMapper;
    
        @Override
        public int insertAudit(List<Audit> auditInfo) {
            auditInfoMapper.insertAudit(auditInfo);
            log.info("insert条数为 ==> {}", auditInfo.size());
            return auditInfo.size();
        }
    }
    
    
  4. controller层

    @RestController
    public class ClickHouseController {
         @Autowired
        AuditService auditService;
        
         @PostMapping("/insertAudit")
        public void insertAudit(@RequestBody List<Audit>  auditInfo){
            List<Audit> list = new ArrayList<>();
            // 待添加(用户)数据   测试
            for (int i = 0; i < 10000; i++) {
                Audit audit = new Audit();
                audit.setInsertDate("2022-08-03 17:15:47");
                audit.setUserType("USER_START");
                audit.setPid("4154545");
                list.add(audit);
            }
            auditService.insertAudit(auditInfo);
        }
        
    
  5. entity 实体类 省略 根据自己的业务来创建

  6. application.yml 配置文件

    spring:
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        click:
          driverClassName: ru.yandex.clickhouse.ClickHouseDriver
          url: jdbc:clickhouse://127.0.0.1:8123/xxx
          initialSize: 10
          maxActive: 100
          minIdle: 10
          maxWait: 6000
          username: xxx
          password: xxxx
          
         
    mybatis-plus:
      mapper-locations: classpath*:mapper/*.xml
      configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
        map-underscore-to-camel-case: true
        cache-enabled: true
        lazy-loading-enabled: true
        multiple-result-sets-enabled: true
        use-generated-keys: true
        default-statement-timeout: 60
        default-fetch-size: 100
        call-setters-on-nulls: true
      type-aliases-package: xx.xx.xxx    
          
    

项目大致如上。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云计算大数据小朋友

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值