Logo
JDBC 驱动

简介 #

DBPlusEngine-Driver 提供了 JDBC 驱动的 all-in-one 版本,在方便用户部署的同时,能够尽量减少潜在的依赖冲突。

部署方式 #

方式一:Maven 依赖 #

选择 system 路径依赖标准坐标依赖 其中一种即可。

system 路径依赖 #

适用于本地开发调试,${dbplusengine.version} 以具体交付版本为准

<dependency>
    <groupId>com.sphere-ex</groupId>
    <artifactId>dbplusengine-driver-all-in-one</artifactId>
    <version>${dbplusengine.version}</version>
    <scope>system</scope>
    <!-- suppress UnresolvedMavenProperty -->
    <systemPath>${maven.multiModuleProjectDirectory}/lib/sphereex-dbplusengine-driver-all-in-one-${dbplusengine.version}.jar</systemPath>
</dependency>

标准坐标依赖 #

此种方式需要先将 jar 和 pom 安装到本地仓库,或部署到能够访问的 Nexus 私服中。

  1. 安装到本地仓库
mvn install:install-file \
-DgroupId=com.sphere-ex \
-DartifactId=dbplusengine-driver-all-in-one \
-Dversion=${dbplusengine.version} \
-Dpackaging=jar \
-Dfile=${file.path} \
-DpomFile=${pom.path}
  1. 或直接部署到 Nexus 私服
mvn -s ~/.m2/release-settings.xml deploy:deploy-file \
-DgroupId=com.sphere-ex \
-DartifactId=dbplusengine-driver-all-in-one \
-Dversion=${dbplusengine.version} \
-Dpackaging=jar \
-Dfile=${file.path} \
-DpomFile=${pom.path} \
-Durl=https://{repository.url}/ \
-DrepositoryId={repository.id}
  1. 添加项目依赖
 <dependency>
 <groupId>com.sphere-ex</groupId>
 <artifactId>dbplusengine-driver-all-in-one</artifactId>
 <version>${dbplusengine.version}</version>
 </dependency>

方式二:导入项目 library #

直接将 jar 包放入项目路径,并添加到依赖库中。如 IDEA 中选择 Add as Library。 适用于不使用 Maven 或 Gradle 等依赖管理工具的项目。

driver-library

方式三:应用外置 classpath #

适用于已打包的 SpringBoot 项目,或打包 SpringBoot 项目时未包含 system scope 的场景。 也适用于其他可以通过 -cp 指定 classpath 的场景。

  1. 将 driver-all-in-one 依赖和应用 jar 包放入合适的目录下,例如:

driver-classpath

  1. 启动脚本

在项目启动脚本中,通过 -cp 指定所有依赖路径(linux 中使用 : 分隔,windows 中使用 ; 分隔),例如:

java -Xmx2g -Xms1g -Xmn1g -cp .:lib/* org.springframework.boot.loader.PropertiesLauncher

方式四:放入 jre/ext-lib #

适用于无法改造的历史项目,将 driver-all-in-one 和数据库驱动、连接池等依赖包放入 jre/ext-lib 目录下。

注意事项 #

附加依赖 #

以下依赖项不包含在 Driver all-in-one 中,需要用户应用自行依赖。

  • 数据库 JDBC 驱动(如 mysql-connector-j-8.0.33.jar)
  • Hikari 连接池 (如 HikariCP-4.0.3.jar)
  • Slf4j 日志门面 (如 slf4j-api-1.7.36.jar)

数据加密 #

若用户应用需要配置 Encrypt Rule 的,请额外添加依赖项。以下为示例,具体的 bcprov 版本号请在获取 DBPlusEngine 时咨询。

<properties>
  <bouncycastle.version>1.70</bouncycastle.version>
</properties>

<dependencies>
  <dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk15on</artifactId>
    <version>${bouncycastle.version}</version>
  </dependency>
</dependencies>

使用驱动 #

使用原生驱动 #

Class.forName("com.sphereex.dbplusengine.driver.SphereExDriver");
String jdbcUrl = "jdbc:sphereex:classpath:config.yaml";

String sql = "SELECT i.* FROM t_order o JOIN t_order_item i ON o.order_id=i.order_id WHERE o.user_id=? AND o.order_id=?";
try (
        Connection conn = DriverManager.getConnection(jdbcUrl);
        PreparedStatement ps = conn.prepareStatement(sql)) {
    ps.setInt(1, 10);
    ps.setInt(2, 1000);
    try (ResultSet rs = preparedStatement.executeQuery()) {
        while(rs.next()) {
            // ...
        }
    }
}

使用数据库连接池 #

String driverClassName = "com.sphereex.dbplusengine.driver.SphereExDriver";
String jdbcUrl = "jdbc:sphereex:classpath:config.yaml";

// 以 HikariCP 为例 
HikariDataSource dataSource = new HikariDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setJdbcUrl(jdbcUrl);

String sql = "SELECT i.* FROM t_order o JOIN t_order_item i ON o.order_id=i.order_id WHERE o.user_id=? AND o.order_id=?";
try (
        Connection conn = dataSource.getConnection();
        PreparedStatement ps = conn.prepareStatement(sql)) {
    ps.setInt(1, 10);
    ps.setInt(2, 1000);
    try (ResultSet rs = preparedStatement.executeQuery()) {
        while(rs.next()) {
            // ...
        }
    }
}

配置说明 #

驱动类名称 #

com.sphereex.dbplusengine.driver.SphereExDriver

URL 配置说明 #

  • jdbc:sphereex: 为前缀
  • 配置文件:xxx.yaml,配置文件格式与 YAML 配置一致
  • 配置文件加载规则:
    • absolutepath: 前缀表示从绝对路径加载配置文件
    • classpath: 前缀表示从类路径中加载配置文件