源码目录与结构

最后更新:2023-12-10 05:30:08 | 状态:未完成
1 anyline-core
基础类都在这里定义,如DataRow/DataSet,ConfigTable,元数据类以及一些util类
2 anyline-data
从这里开始定义数据操作相关的接口
  • AnylineService/ServiceProxy:操作数据库的最主要的入口,在新版本中每个数据源都对应一个service实例,ServiceProxy.service(ds)可以返回针对ds数据源的service
  • DriverAdapter/DefaultDriverAdapter:所有数据库适配器的顶级接口和父类
  • DriverAdapterHolder/DatasourceHolder/RuntimeHolder以及各个Proxy: 用来管理数据源、适配器、运行时环境。如根据数据源识别出相应的适配器、保持运行环境。
  • DataReaderFactor/DataReader:从数据库中读取数据后执行类型转换,有些复杂类型与数据库类型不一样如物理空间Point,Line等在数据库中保存的是byte[]数据,读取后需要转换成具体的对象方便操作。
  • DataWriterFactory/DataWriter:在写入数据库前执行类型转换,如有些数据库类型要求比较严格,定义的int但写入的是String这时需要转换一下类型才能成功写入
  • Interceptor/Listener:数据操作过程中的监听器、拦截器
  • data.param:对请求参数的封装,可以用来直接生成下一步的prepare,这里有一个常用的ConfigStore在实现复杂的查询条件时需要用到
  • data.prepare:在生成执行命令(jdbc环境的话就是SQL)前的命令分解,如GROUP,ORDER等,
    这里提供了多个prepare分类,常用的如auto.Table就是根据表查询,auto.Text可以直接提供一条原生的SQL,XML类似MyBatis那样在XML中定义的SQL
    在这一步还不区分是什么数据库。所有参数统一成一种格式,所以在通过ConfigStore构造查询条件时不需要关心是什么数据库
  • data.run就是根据prepare生成的针对不同数据库的行命,所以这一步就需要调用不同数据库的adapter了

整体的流程在这个目录中就执行完了,data-dialect中只是一些针对不同数据库的适配器算是这里的子流程

3 anyline-data-dialect-*
根据数据库主模板划分的数据库适配器目录,几乎每个数据库都需要实现一个适配器
我们平时常用的一些适配器都在这个目录中,如anyline-data-dialect-relational/anyline-data-jdbc-mysql ;anyline-data-dialect-graph/anyline-data-neo4j
注意dialect只是用在目录上,在jar上并不需要
4 anyline-data-jdbc

因为jdbc类型的库比较多,所以针对jdbc类型抽象的基础方法,主要提供了JDBCAdapter继承自DriverAdapter

实现了ISO/IEC 9075的标准语法(当然没有完全实现)就是我们常说的 SQL 92/SQL 99等,也不会太新,因为太新的语法,大部分数据库也不支,持所有支持JDBC的类从这里继承

继承关系如下:

DriverAdapter>JDBCAdapter>OracleAdapter

5 anyline-dependency
这里定义了anyline依赖的pom版本,以及maven服务器等基础信息


最近更新 搜索 提交