Skip to content

Latest commit

 

History

History
166 lines (132 loc) · 9.71 KB

README.zh.md

File metadata and controls

166 lines (132 loc) · 9.71 KB

Simple Java Frame V1.0

简易支持自定义ORM,可以灵活整合JPA,mybatis_plus,提供大数据相关工具类,支持数据挖掘工具 Build Status CircleCI license

介绍

基于SpringBoot 和Spring2 与3两种模式的简易框架,ORM包含自定义的类似SpringData Jpa的ORM实现与类似Mybatis的可配置式SQL查询工具,hadoop工具支持基本的大数据工具包,统一的数据定义和数据访问接口,支持数据文件格式(CSV/JSON/XML/AVRO/PARQUET/PROTOBUF),数据源支持(本地/HDFS/APACHE VFS/)

软件架构

软件架构说明

目前框架由8个模块组成

1.Core:核心包,包含Model/DAO/Service及ORM的基础类及DB Dialect。数据库Dump和Import的工具包等,支持JAVA基本框架的内容
增加License 管理功能,支持引用核心包后带上许可验证功能
2.Common:通用工具包,包含统一资源访问的接口定义和Apache VFS与本地资源的实现,基于poi的xls读取和生成工具(支持Stream),
3.hadooptool:包含大数据相关的基本工具类和统一资源访问的大数据实现
4.web:基于SpringMVC的基础类及Spring message的基础类(支持多国语言)
5.metadata 基于统一资源访问的关系数据源与NoSql数据源的元数据数据探索和管理;
6.estool 通用的ElasticSearch查询访问工具类,能自动感知es下的所有索引,基于restapi
7.trace 基于Zipkin的链路追踪项目,支持任意数据库的追踪,并支持记录PreparedStatement 的参数;
8.dataming 数据挖掘工具支持(支持Weka Smile spark mlib 等数据挖掘框架)

Spring Boot 支持

spring-start 工程,与spring boot 进行整合,支持链路追踪相关的配置(基于zipkin),基于探针的链路追踪详见另一个开源工程comm-probe

通用文件系统和云存储读写访问支持

支持本地文件(Local)/HDFS/ApacheVFS 等文件系统
支持 亚马逊 S3/阿里云/腾讯云/百度云/七牛云/Minio 等云存储系统
支持Apache Kafka/rabittMQ 等流式处理平台

大数据通用文件格式读写支持

支持parquet/orc/avro/protobuf/csv/xml/json 等文件格式
与通用文件系统和云存储访问整合,支持压缩格式

数据挖掘平台支持

支持Weka/Smile/spark mlib 数据挖掘工具,与上面提到的文件格式读写和通用文件系统读取能力结合;
支持ARFF格式文件操作 (Weka 支持)

core与common工程由ProGuard进行混淆保护

安装教程

1.在根目录下运行 mvn clean install -Dmaven.test.skip=true -e -U

使用说明

开发说明

I.自定义Model:支持JPA和自定义的Annotation,可支持符合主键,自增长字段保存后自动回填相应字段
    
    1.Example:
        包: core/src/test/java/com/robin/core/test/model
        TestJPaModel 基于JPA的modelmodel
        TestModel 基于自定义的Annotation
        TestLob  支持lob操作的modelmodel
    开发:
        1.创建类继承BaseObject;
        2.对应字段用MappingField标注
        实体标识说明
        @MappingEnity 
             -------------------------------------------------------------------
            |参数                 |说明                                           |
            |value               |表名                                           |
            |schema              |schema                                         | 
            |jdbcDao             |多数据源支持(详见core的testcase)                 |
            --------------------------------------------------------------------
        字段标识说明
        @MappingField
            ----------------------------------------------------------------------------------------
            |parameter           |reference                                                         |
            |value               |数据库字段名,确实驼峰命名                                             |
            |primary             |主键设为true                                                        |
            |increment           |自增长设为true                                                      |
            |sequenceName        |支持sequence得数据库设为true                                         |
            |required            |字段不允许为空                                                       |
            |datatype            |clob或blob类型,设为"clob" 或 "blob"                                 |
            |precise             |精度                                                               |
            |scale               |scale                                                             |
            |length              |长度                                                               |
            ----------------------------------------------------------------------------------------
         在新增和修改的时候,实体会根据以上的类型和required标识进行验证
         
         符合主键,见例子 core/src/test/java/com/robin/core/test/model/TestMutiPK
            
II.自定义得DAO层:
        使用 com.robin.core.base.dao.JdbcDao,没有特殊业务需要,无需另外创建
        1.配置式SQL查询     
        类似于mybatis的配置式查询,简化了相应的配置,去掉了Map转Model的操作,可支持PreparedStatement与NamedPreparedStatment,
        及最简单的替换SQL(有注入攻击风险)   
        使用
        1.1 配置SpringSpring
            在配置文件中添加                
                <bean id="queryFactory" class="com.robin.core.query.util.QueryFactory" autowire="byName">
                    	<property name="xmlConfigPath" value="classpath:query"></property>
                </bean>
                
            springboot配置
                @Bean(name="queryFactory")
                public QueryFactory getQueryFactory(){
                     QueryFactory factory=new QueryFactory();
                     factory.setXmlConfigPath(queryConfigPath);
                     return factory;
                }
        1.2 SQL配置文件
            在xmlConfigPath 目录下,添加任意xml文件
            内容如下
                <SQLSCRIPT ID="$_GETCODESET">
                    <FROMSQL>from t_sys_code a,t_sys_codeset b where a.CS_ID=b.ID and ${queryString}</FROMSQL>
                	<FIELD>a.ITEM_NAME as ITEMNAME,a.ITEM_VALUE as ITEMVALUE</FIELD>
                </SQLSCRIPT>
            调用Service的queryBySelectId,传入ID和参数,可以实现查询功能
        
        2.不同数据库的支持
        配置方言使用的工具类
            在配置文件中添加
            <bean id="sqlGen" class="com.robin.core.sql.util.MysqlSqlGen" autowire="byName"></bean>
            支持的数据库包括
            MysqlSqlGen                 Mysql
            OracleSqlGen                Oracle
            Db2SqlSqlGen                Db2
            SqlServcer2005Gen           SqlServcer2005
            PostgreSqlGen               Postgre
            SybaseSqlGen                Sybase

        
III.自定义Service层
        实例: core/src/test/java/com/robin/core/test/service 
        主要方法
            ---------------------------------------------------------------------------------
            |function name           |description                                           |
            |saveEntity              |insert to DB                                           |
            |updateEntity            |update to DB                                           |
            |deleteEntity            |delete by key array                                    |
            |getEntity               |select by id                                           |
            |queryByField            |query with specify column and value                    |
            |queryBySelectId         |query with config query                                |
            ---------------------------------------------------------------------------------    
    以上设计参照JPA标准,提供的方法进行了扩充

    
              
            
IV.Controller层
        web工程
        BaseController  Contorller 基类
        BaseCrudController         基于单表增删改查
        BaseCrudDhtmlxController   结合Dhtmlx 5.1,辅助类
        AbstractAutoController  自动装配的Controller,零代码实现CRUD基本操作

V.统一资源访问

    通过封装,提供一致的接口,提供支持ApcheVFS/HDFS/LOCAL数据源 对应数据文件(支持CSV/XML/JSON/AVRO/PARQUET/PROTOBUF,支持压缩)的统一读取和写入,目前不支持文件切分处理
    实例代码:详见common工程的testcase com.robin.comm.test.TestJsonGen TestJsonRead
            hadooptool:com.robin.test.TestResourceGen TestParquetWriter

VI.web工程
    基于传统配置式 spring maven 项目 example/config-example
    基于spring boot和 cloud的微服务架构  webui,引擎使用thymeleaf