bboss高性能db批处理功能使用方法介绍

简介: bboss持久层在v5.0.3.5中新增简单的高效的db批处理功能,本文介绍使用方法。 首先在项目中导入bboss 持久层包: maven坐标     com.bbossgroups     bboss-persistent     5.
bboss持久层在v5.0.3.5中新增简单的高效的db批处理功能,本文介绍使用方法。
首先在项目中导入bboss 持久层包:
maven坐标
<dependency>
    <groupId>com.bbossgroups</groupId>
    <artifactId>bboss-persistent</artifactId>
    <version>5.0.3.5</version>
</dependency>
gradle坐标
compile 'com.bbossgroups:bboss-persistent:5.0.3.5'

轻量级批处理方法
直接操作sql语句的组件SQLExecutor
com.frameworkset.common.poolman.SQLExecutor
public static <T> void executeBatch(String sql,List<T> datas,int batchsize, BatchHandler<T> batchHandler) throws SQLException	
//指定数据源dbname
public static <T> void executeBatch(String dbname,String sql,List<T> datas,int batchsize, BatchHandler<T> batchHandler) throws SQLException



加载sql配置文件的组件ConfigSQLExecutor
com.frameworkset.common.poolman.ConfigSQLExecutor
public <T> void executeBatch(String sqlname,List<T> datas,int batchsize, BatchHandler<T> batchHandler) throws SQLException
//指定数据源dbname
public <T> void executeBatch(String dbname,String sqlname,List<T> datas,int batchsize, BatchHandler<T> batchHandler) throws SQLException


批处理语句参数设置器:
package com.frameworkset.common.poolman;
/**
 * 轻量级jdbc批处理操作记录设置器
 */

import java.sql.PreparedStatement;
import java.sql.SQLException;

public interface BatchHandler<T> {
	/**
	 *
	 * @param stmt jdbc PreparedStatement   parameterIndex the first parameter is 1, the second is 2, ...
	 *                                      x the parameter value
	 * @param record 当前操作的变量
	 * @param i 行索引
	 * @throws SQLException
	 */
	public void handler(PreparedStatement stmt,T record,int i) throws SQLException;

}


使用实例
以SQLExecutor组件来做为例子介绍如下:
@Test
    public void testBatch() throws SQLException {
        List<Map<String,String>> datas = new ArrayList<Map<String,String>>();//构造数据
        for(int i = 0; i < 100000; i ++){
            Map<String,String> data = new HashMap<String, String>();
            if(i % 3 == 0)
                data.put("name","jack_"+i);
            else if(i % 3 == 1)
                data.put("name","brown_"+i);
            else if(i % 3 == 2)
                data.put("name","john_"+i);
            datas.add(data);
        }
        SQLExecutor.delete("delete from batchtest");//清空表数据
//批处理执行
        SQLExecutor.executeBatch("insert into batchtest (name) values(?)", datas, 10,new BatchHandler<Map<String,String>>() {
            @Override
            public void handler(PreparedStatement stmt, Map<String,String> record, int i) throws SQLException {
                stmt.setString(1,record.get("name"));
            }
        });
    }
目录
相关文章
|
监控 Cloud Native 搜索推荐
Springboot/Springcloud整合ELK平台,(Filebeat方式)日志采集及管理(Elasticsearch+Logstash+Filebeat+Kibana)
Springboot/Springcloud整合ELK平台,(Filebeat方式)日志采集及管理(Elasticsearch+Logstash+Filebeat+Kibana)
2990 0
Springboot/Springcloud整合ELK平台,(Filebeat方式)日志采集及管理(Elasticsearch+Logstash+Filebeat+Kibana)
|
9月前
|
存储 运维 监控
从 ClickHouse 到 Apache Doris:在网易云音乐日增万亿日志数据场景下的落地
日志数据已成为企业洞察系统状态、监控网络安全及分析业务动态的宝贵资源。网易云音乐引入 Apache Doris 作为日志库新方案,替换了 ClickHouse。解决了 ClickHouse 运维复杂、不支持倒排索引的问题。目前已经稳定运行 3 个季度,规模达到 50 台服务器, 倒排索引将全文检索性能提升7倍,2PB 数据,每天新增日志量超过万亿条,峰值写入吞吐 6GB/s 。
620 5
从 ClickHouse 到 Apache Doris:在网易云音乐日增万亿日志数据场景下的落地
|
Shell Linux
linux如何创建定时任务,执行某个shell脚本
linux如何创建定时任务,执行某个shell脚本
1238 0
|
安全 搜索推荐 Ubuntu
|
JavaScript 前端开发
JavaScript 数字精度丢失问题
【10月更文挑战第24天】解决 JavaScript 数字精度丢失的问题需要综合考虑多种因素,并根据具体情况选择合适的方法。通过合理的处理和预防,可以在一定程度上减少精度误差的影响,确保计算结果的准确性。
|
机器学习/深度学习 移动开发 JavaScript
Web实时通信的学习之旅:SSE(Server-Sent Events)的技术详解及简单示例演示
Web实时通信的学习之旅:SSE(Server-Sent Events)的技术详解及简单示例演示
5409 0
|
SQL Java 关系型数据库
实时数仓 Hologres产品使用合集之如何安装和使用Java SDK
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
存储 Linux 网络安全
Centos安装Docker的详细安装步骤,Docker相关组件:docker-ce-cli、docker-ce和containerd.io的区别
Centos安装Docker的详细安装步骤,Docker相关组件:docker-ce-cli、docker-ce和containerd.io的区别;CentOS7安装DockerCompose;Docker镜像仓库
1916 11
|
存储 前端开发 安全
深入理解React中的useState:函数组件状态管理的利器
深入理解React中的useState:函数组件状态管理的利器
|
存储 IDE 开发工具
硬盘驱动程序设计
硬盘驱动程序设计
277 0