一、准备工作
1、确认 DM8 环境
确保本地已安装 DM8 数据库,并且服务正常运行,同时拥有可访问的数据库、用户名和密码。
2、获取 DM8 驱动
DM8 的 JDBC 驱动(dm8-jdbc-driver.jar)通常在 DM8 安装目录的 dmdbms/drivers/jdbc 下,也可以通过 Maven 引入(需注意驱动版本与 DM8 适配)。


另外,dm8-oracle-jdbc16-wrapper.jar 是 Oracle JDBC 的适配包装,用于兼容部分 Oracle 语法的场景。
二、修改思路
1、替换 Maven 依赖
首先移除 MySQL 驱动依赖,添加 DM8 驱动依赖。
原 MySQL 依赖(需删除):
xml
<!-- MySQL驱动 -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
添加 DM8 驱动依赖:
如果本地有 DM8 驱动 jar 包,可先将 jar 包放入项目 lib 目录(无则新建),然后在 pom.xml 中引入:
xml
<!-- DM8驱动依赖(本地jar包方式) -->
<dependency>
<groupId>com.dameng</groupId>
<artifactId>Dm8JdbcDriver18</artifactId>
<version>8.1.2.193</version> <!-- 替换为你的DM8驱动版本 -->
<scope>system</scope>
<systemPath>${project.basedir}/lib/dm8-jdbc-driver.jar</systemPath> <!-- 驱动jar包路径 -->
</dependency>
注意:如果你的 Maven 仓库能获取到达梦官方依赖,也可直接使用中央仓库依赖(需确认仓库配置):
xml
<dependency>
<groupId>com.dameng</groupId>
<artifactId>dm-jdbc-driver</artifactId>
<version>8.1.2</version>
</dependency>
2、修改配置文件
这是核心步骤,替换数据库连接相关配置。
方式 1:application.yml(推荐)
yaml
spring:
datasource:
# DM8驱动类名
driver-class-name: dm.jdbc.driver.DmDriver
# DM8连接URL,格式:jdbc:dm://IP:端口/数据库名?参数
# 本地默认端口:5236,替换为你的数据库名、用户名、密码
url: jdbc:dm://localhost:5236/TESTDB?characterEncoding=utf8&useUnicode=true
username: SYSDBA # DM8默认管理员用户名
password: SYSDBA # DM8默认密码(需替换为你的实际密码)
# 若使用MyBatis,无需额外修改,DM8兼容标准SQL
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.example.demo.entity
方式 2:application.properties
java
# DM8驱动类名
spring.datasource.driver-class-name=dm.jdbc.driver.DmDriver
# DM8连接URL
spring.datasource.url=jdbc:dm://localhost:5236/TESTDB?characterEncoding=utf8&useUnicode=true
# 数据库用户名和密码
spring.datasource.username=SYSDBA
spring.datasource.password=SYSDBA
3、适配 DM8 的 SQL 语法(可选)
DM8 整体兼容 MySQL 的大部分 SQL 语法,但少量语法需调整:
分页:MySQL 的 limit 替换为 DM8 的 rownum 或 limit(DM8 也支持 limit,推荐直接用);
函数:如 MySQL 的 now() 可直接用,concat() 语法一致;
主键自增:MySQL 的 auto_increment 替换为 DM8 的 identity(1,1)。
示例(MyBatis 映射文件):
xml
<!-- MySQL分页 -->
<select id="list" resultType="User">
select * from user limit #{start},#{size}
</select>
<!-- DM8分页(兼容limit,无需修改;也可改用rownum) -->
<select id="list" resultType="User">
select * from user where rownum <= #{size} and rownum > #{start}
</select>
4、测试连接
启动 SpringBoot 项目,若控制台无 Cannot create PoolableConnectionFactory 等错误,且能正常执行数据库操作(如查询、新增),则配置成功。
三、实际应用
项目结构是多模块

- 配置文件包含机制
main模块的application.yml通过 spring.profiles.include 指令包含了其他模块的配置文件:
yaml
spring:
profiles:
include: base,account
这种方式会将指定的配置文件与主配置文件合并。
-
配置优先级
Spring Boot配置文件的优先级规则:主配置文件 > 包含的配置文件;相同配置项,后加载的会覆盖先加载的
-
数据库配置
父模块定义的依赖会传递给所有子模块:
移除MySQL驱动后,所有子模块都无法使用MySQL驱动
添加达梦DM8驱动后,所有子模块都可以使用达梦DM8驱动
main模块 :配置了MySQL数据库连接的基础数据库连接信息;
base模块 :配置了MySQL数据库连接的Druid 连接池;
核心是把 "基础信息" 和 "连接池管理" 解耦,让配置更清晰、复用性更高。
MySQL 基础数据库连接信息:就是连接数据库必需的 "基础参数"(比如数据库地址、用户名、密码、驱动类名),相当于 "登录数据库的账号密码 + 服务器地址";
Druid 连接池:是阿里巴巴开源的数据库连接管理工具,不是直接连数据库,而是帮你 "管理数据库连接"(比如创建多少个连接、复用连接、监控连接),避免频繁创建 / 销毁连接导致性能浪费。
1、修改驱动
在父模块的pom.xml里修改mysql为dm:
xml
<!-- mysql驱动 -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
xml
<!-- 达梦DM8驱动 -->
<dependency>
<groupId>com.dameng</groupId>
<artifactId>dm-jdbc-driver</artifactId>
<version>8.1.2</version>
</dependency>
2、修改数据库连接
因为 main 模块里的application.yml里配置了MySQL 基础数据库连接信息:
yaml
server:
port: 8066
servlet:
context-path: /backend
spring:
profiles:
include: base,account
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&allowMultiQueries=true&useSSL=true&serverTimezone=GMT%2B8
username: root
password: ******
yaml
server:
port: 8066
servlet:
context-path: /backend
spring:
profiles:
include: base,account
datasource:
# 保留Druid数据源类型配置(因为项目用了Druid,必须保留)
type: com.alibaba.druid.pool.DruidDataSource
# DM8驱动类名(替换MySQL驱动)
driver-class-name: dm.jdbc.driver.DmDriver
# DM8连接URL(替换MySQL URL,需修改数据库名TESTDB为你本地DM8的实际库名)
url: jdbc:dm://localhost:5236/TESTDB?characterEncoding=utf8&useUnicode=true
# DM8的用户名和密码(替换MySQL的账号密码,需改为你本地DM8的实际账号密码)
username: SYSDBA
password: SYSDBA
3、修该Druid连接池
Druid 连接池本身和数据库类型无关,切换数据库(如 MySQL → 达梦)时,只需要调整数据库连接的基础参数(main模块里的application.yml),Druid 连接池的核心配置(如连接数、超时时间)完全不用改。
base 模块里的application-base.yml里配置了Druid 连接池,按道理无需修改,但是如果有这一行:
yaml
spring:
datasource:
druid:
validation-query: SELECT 1 FROM DUAL
MySQL 中SELECT 1 FROM DUAL是通用写法,但 DM8 中DUAL是虚拟表,虽兼容,但SELECT 1是 DM8 更原生的连接校验语句;
如果不修改,大概率不会报错,但可能出现 Druid 连接池 "假死"(连接校验不通过,频繁重建连接),修改后更稳定。
yaml
spring:
datasource:
druid:
# 其他配置保留不变,仅修改这一行
validation-query: SELECT 1 # 替换原有的SELECT 1 FROM DUAL
4、依赖解析失败


核心问题是:Maven 在中央仓库(repo.maven.apache.org)里找不到达梦驱动 com.dameng:dm-jdbc-driver:8.1.2,所以项目依赖解析失败了。
错误原因是:
达梦驱动属于商业软件的依赖,达梦数据库的 JDBC 驱动既没上传到 Maven 中央仓库(中央仓库只有公共开源的依赖),也没上传到阿里云等公共镜像仓库,所以不管是从中央仓库还是阿里云仓库,下载时会提示 "找不到"它。