Skip to content

DasClient 集成说明

Shengyuan Lu 卢声远 edited this page Dec 9, 2019 · 30 revisions

Das Client集成说明

本文介绍了如何集成DAS客户端并开始使用。DAS提供了配置集成接口,并提供了缺省配置。

Das Client缺省集成说明

简介

本文将介绍如何从零构建一个DAS应用。

1. 构建数据库

根据你的应用业务需求在MySQL或者SQLServer数据库上建立库和表。

DAS单元测试所用的数据库schema文件分别参见:

  1. 测试用MySQL数据库脚本
  2. 测试用SQLServer数据库脚本

单元测试入口

2. 在das-console中配置物理数据库和逻辑数据库,并生成das.xmldatasource.xml文件

在das-console中创建das项目,然后将步骤1构建的数据库信息配置到物理数据库和逻辑数据库。配置完成后,生成并下载das.xmldatasource.xml文件至本地。

🔗 详细步骤参见:DasConsole-创建项目

3. das-console中生成实体类java文件

在das-console中,为每个数据表或查询生成一个java文件。

🔗 详细步骤参见:DasConsole-生成代码

4. 配置java工程

创建java工程,在你的pom.xml中加入das依赖:

<dependency>
    <groupId>com.ppdai.das</groupId>
    <artifactId>das-client</artifactId>
    <version>2.2.3</version>
</dependency>

💡 安装JDBC驱动和其他依赖

DAS依赖一些第三方库。如果用户缺乏相关依赖,可能会导致无法编译或运行。例如MS Sqlserver的依赖很多公司可能就没有。用户可以自行搜索并安装到本地或公司的nexus repo。为了方便大家使用,我们对用到的部分容易缺失的依赖提供备份:

下载以下3个驱动包:

将这3个文件拷贝到本地D:\目录下,分别将这3个驱动文件install到本地repo的命令如下:

mvn install:install-file -DgroupId=com.microsoft.sqlserver -DartifactId=mssql-jdbc -Dversion=6.2.2.jre7.ctrip -Dpackaging=jar -Dfile=d:\mssql-jdbc-6.2.2.jre7.ctrip.jar

mvn install:install-file -DgroupId=mysql -DartifactId=mysql-connector-java -Dversion=6.2.2.jre7.ctrip -Dpackaging=jar -Dfile=d:\mysql-connector-java-5.1.38.jar

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.4 -Dpackaging=jar -Dfile=d:\ojdbc6-11.2.0.4.jar

如果有发现javax.persistence:persistence-api无法从maven仓库得到,请同样方式从这里下载到本地install:

mvn install:install-file -DgroupId=javax.persistence -DartifactId=persistence-api -Dversion=1.0.2 -Dpackaging=jar -Dfile=d:\persistence-api-1.0.2.jar

将步骤2生成的das.xmldatasource.xml文件拷贝到工程的resources目录。

然后将步骤3生成的实体类的java代码拷贝入你的java工程。

5. 开始编写代码

我们现在可以利用DAS提供的API开始编写代码。

🔗 API使用请参见:DAS Client使用说明

Das Client自定义集成说明

DAS客户端总体配置

接口定义

ClientConfigureLoader接口定义了客户端总体配置。

    String getAppId();

    /**
     * @return User's customized Das Client version. For logging purpose
     */
    String getCustomerDasClientVersion();

    boolean isProxyEnabled() throws Exception;

    /**
     * @return DasConfigure for default appID
     * @throws Exception
     */
    DasConfigure load() throws Exception;

    /**
     * @return DasLogger
     * @throws Exception
     */
    DasLogger getDasLogger() throws Exception;

    /**
     * @return all available das server instances
     */
    List<DasServerInstance> getServerInstances() throws Exception;

DasConfigure

DasConfig主要的功能是提供DAS所需逻辑数据库配置和各种帮助类, 含义如下:

方法 含义 缺省实现
DasLogger DAS内部调用的日志接口 DefaultLogger
ConnectionLocator 获取Connection的工厂类 DefaultConnectionLocator
TaskFactory JDBC层数据库操作实现的工厂类 DefaultTaskFactory
DatabaseSelector 数据库选择器 DefaultDatabaseSelector

缺省实现

DAS Client启动时如果没找到用户自定义的实现,则会缺省的使用DefaultClientConfigLoader实现。

DefaultClientConfigLoader会读取项目的resources/das.xml文件和datasources.xml文件来获取逻辑数据库配置和物理数据库配置

缺省逻辑数据库配置das.xml

示例:das.xml

缺省物理数据库配置datasources.xml

具体内容可以参考

示例:datasource.xml

自定义加载

如果用户希望自定义客户端配置,需要实现ClientConfigureLoader接口,并将类名放到项目的下列对应文件中:

resources\META-INF\services\com.ppdai.das.core.ClientConfigureLoader

自定义实现的难点在如何创建ConnectionLocator,可以参考下列的代码,用户仅需要提供自定义的DataSourceConfigureProvider即可。

参考实现:

    private ConnectionLocator getConnectionLocator() throws Exception {
        ConnectionLocator locator = new DefaultDalConnectionLocator();
        Map<String, String> settings = new HashMap<>();
        settings.put(DefaultDalConnectionLocator.DATASOURCE_CONFIG_PROVIDER,
                PPDaiDataSourceConfigureProvider.class.getName());
        locator.initialize(settings);
        return locator;
    }
Clone this wiki locally