简介
sybn util 是个人积累的 java 数据操作工具集,其主要包括两层:
- 数据操作工具 (各种静态数据工具类, 对 list stream map bean 等形式的数据执行各种 筛选 聚合 转换 操作)
- 数据库操作工具 提供统一的 dao 或者 jdbc 接口
支持使用 sql 单独或联合查询以下数据源:
java: list, stream (支持查询无界流)
jdbc: mysql, gbase, hive, presto, clickhouse 等
no-sql: mongo, solr, elastic search, HBase, redis 等
本地或远程文件: excel(xls,xlsx,csv), json 等
基于任意 rest api 的虚拟表
正在或准备借鉴以下开源项目:
- hutool
- Javatuples
- solr jdbc driver
- Presto
- druid
- spark
项目依赖,基于最小依赖原则,本项目主要依赖以下内容:
- junit
- apache-common
- slf4j
数据库工具
目前提供 DAO 形式的CRUD工具,正在着手将之封装为 jdbc 驱动包。
- sybn-core 项目
- 为 List(兼容excel) 实现了 SqlDdlDao 接口
- 为 Stream(数据流) 实现了 SqlDdlStreamDao 接口
- 为 聚合查询 实现了 SqlDdlDao 接口,支持聚合查询其他所有 SqlDdlDao 接口
- sybn-jdbc-driver
- 将其他各种项目封装为标准 jdbc, 从而接入 spring, mybatis 等框架.
- dbutiil-dao 项目
- 为 mysql, gabse, mpp, presto 等 jdbc 数据源 实现了 SqlDdlDao/SqlDdlStreamDao 接口
- mongo-dao 项目
- 为 mongo 实现了 SqlDdlDao/SqlDdlStreamDao 接口, 并支持子查询
- solr-dao 项目
- 为 solr 实现了 SqlDdlDao/SqlDdlStreamDao 接口
- es-dao 项目
- 为 elastic 实现了 SqlDdlDao/SqlDdlStreamDao 接口
- hadoop-dao 项目
- 为 HBase实现了 SqlDdlDao/SqlDdlStreamDao 接口
基础工具
基础工具是 sybn-core 和 sybn-core-java8 项目,其包括如下主要功能:
- 常用的通用JavaBean sybn-core cn.sybn.bean 包
- 缓存对象 cache 包
- 计数器对象 counter 包
- 实体对象 entry 包
- 异常对象 exception 包
- 主函数对象 main 包
- 返回值对象 result 包
- 范围对象 scope 包
- 时间范围对象 times 包
-
独立工具集 sybn-core cn.sybn.singleutil 包
此包下所有工具没有额外依赖,可以拎出来独立运行。 默认只依赖如下开源库: slf4j, junit, apache-commons, jackson 部分测试业务依赖了其他包,但是可以随时删除。
- 复杂工具集 sybn-core cn.sybn.util 包
- 字符串工具 string 包
- 单对象数据转换
- 对象集合数据转换
- 对象集合 group 成 Map
- 对象集合 group by 统计 及 fill 补零
- 任务及日志工具 task包
- 数据库业务通用包 id.db 包
- 定义了 SybnQuery 和 CrudQueryCommonDao 接口
- 测试工具集 sybn-core cn.sybn.test 包
其他工具
- mail-util
- 发送邮件
- 缓存发送邮件
- http-util
- httpclient 工具
- office-util
- xls 导出工具
- servlet-util
- servlet 工具
近期更新
- 0.3.11 版
- 增强了 es 和 hbase 的支持
- 0.3.10 版
- 增强了聚合函数被嵌套的支持
- 0.3.9 版
- 增强了 presto 支持
- 支持 show tables 等命令
- 0.3.8 版
- 增强了 inner join 等
- 0.3.7 版
- 支持配置默认的超时时间
- 0.3.6 版
- 增强了 es dao 和 jdbc 实现
- 0.3.5 版
- 重构了 join 实现类, 增加了更多的用法, 降低了对原始数据的影响
- 重构了 聚合查询实现 提高了性能
- 0.3.4 版
- 支持 mongo 压缩传输, 提高了性能
- 支持 mongo / mysql 的 select distinct a from table 语句
- 支持 mongo 的 select a form (select b from table) 原生嵌套查询, 相比之前的 java 实现提高了性能
- 支持 无表查询语句, 比如: select now(); 一般用于调试 set 语句.
- 支持 UDF 函数: dateadd, datesub, length, charlength, lpad, rpad, upper, lower, initcap, extract, least, greatest, MD5 等