maven 和 spring boot 都提供了各自的多环境切换方案,sybn util 工具包中也有自己的解决方案。
此方案用于在多个环境中切换配置文件, 甚至在运行时指定 jar/war 包以外的任意系统目录中的的配置文件。
优点: 在开发和部署时可以使用完全相同的程序包,不用像 maven 那样去手动切换环境,而是像 spring boot 那样通过命令行参数,或者运行时环境变量来决定配置文件。
提示:
ReadConfUtil 属于 cn.sybn.singleutil 包.
因此他是一个独立工具类,在必要时直接将这个类复制到其他项目中可以单独使用,不需要依赖整个 sybn util 包。
## sybnuitl_test.properties
# 不带空格,实际值:"111111"
value1=111111
# 前后带空格,会被忽略,实际值:"222222"
value2 = 222222
# 变量内含变量,会被替换,实际值:"333111111333"
value3=333${value1}333
// 从默认配置文件获取属性值
System.setProperty(SYBN_CONF, "sybnuitl_test.properties");
// or java -jar -DSYBN_CONF=sybnuitl_test.properties
String value = ReadConfUtil.getValue("value1"); // 111111
// 从指定配置文件获取属性值
// value1 = 111111
String value1 = ReadConfUtil.getValue("value1@sybnuitl_test.properties"); // jar中搜索配置文件
// value2 = 222222
String value2 = ReadConfUtil.getValue("value2@./sybnuitl_test.properties"); // 相对路径配置文件
// value3 = 333111111333
String value3 = ReadConfUtil.getValue("value3@/usr/local/sybn/sybnuitl_test.properties"); // 绝对路径
// 从变量中指定的配置文件获取属性值 (支持操作系统环境变量)
System.setProperty("JUNIT_CONF", "sybnuitl_test");
// or java -jar -DJUNIT_CONF=sybnuitl_test
String value4 = getValue("value3@{JUNIT_CONF}.properties");
打算定期截一下质量报告,督促自己维持和提高代码质量




sybn util 中关于 使用 sql 查询各个数据库的业务,暂时命名为 sybn sql.
目前主要是 SqlDdlDao 和 SqlDdlStreamDao ,及其在各个数据库的实现.
包括: MongoDao / MongoStreamDao, SolrDao, EsDao, HBasesDao / HbaseStreamDao, DbutilDao(sql), DatasSqlDqlEngine / DatasSqlDqlStreamEngine 等.

SqlDdlDao 和 SqlDdlStreamDao 是在各个数据库中执行 sql 操作的接口.
目前已有多种数据库Dao实现了此接口:
另外还有用于查询 list 和 Stream 的实现类:SqlDdlDaoListImpl / SqlDdlDaoStreamAsyncImpl

另外还有针对不同数据库联合查询的实现类: SqlDdlDaoMultipleImpl
XxxGroupByUtil 和 XxxGroupByUtil 可以在各个数据库中执行 groupby 操作.
XxxGroupByStreamUtil 接收 Stream 数据, XxxGroupByUtil 接收 Iterable 数据.
目前有3种实现: mongo, solr, java
他们都支持基础的聚合函数,比如: sum,min,max,count,count distinct等
其中 java 实现已经准备了大量自定义聚合函数(UDAF),并支持业务代码随时注册新的函数.
SybnQuery 属于 sybn-core 项目
动态的查询对象,借鉴于 queryDSL 中的动态查询对象。用于动态构建查询,并用于读写不同数据库。
