jeecg他的文档中有一个集成达梦数据库的步骤,链接如下 连接达梦数据库 - JeecgBoot 文档中心,但是我按照步骤去操作的时候并没有适配成功,大部分是他的步骤写的不够清楚,没有说明改哪里的文件,下面是我摸索的适配步骤。
jeecg版本:3.5.2
1,驱动依赖
在jeecg-system-start 模块的pom文件中添加
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmJdbcDriver18</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmDialectForHibernate</artifactId>
<version>5.3</version>
</dependency>
这两个文件如果下载不下来,可以去达梦数据库的安装位置找一下,在dialect目录下,然后放到本地仓库对应的位置即可。
2,修改 application-dev.yml 文件
说明一下:
2.1我这里设置的是多数据源,不需要的把从数据源注释掉就可以了,
2.2 模式名和账户密码aaa,bbb换成自己的账户密码。
2.3 根据jeecg官方的教程改文件,可以参考我改成下面的样子(位置啥的官方文档没有说清楚)
spring:
jpa:
open-in-view: false
properties:
hibernate:
dialect: org.hibernate.dialect.Oracle8iDialect
datasource:
druid:
stat-view-servlet:
enabled: true
loginUsername: admin
loginPassword: 123456
allow:
web-stat-filter:
enabled: true
#打开多数据源,加上上面的就可以实现多数据源的配置
dynamic:
druid:
filters: stat,slf4j
# 初始连接数
initialSize: 5
validationQuery: SELECT 1 FROM DUAL
# 最小连接池数量
minIdle: 5
# 最大连接池数量
maxActive: 10
datasource:
master:
url: jdbc:dm://127.0.0.1:52361/?aaa&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
username: aaa
password: aaa
driverClassName: dm.jdbc.driver.DmDriver
type: com.alibaba.druid.pool.DruidDataSource
#在service层用 @DS("db2") 来选择使用从库,否则使用主库
db2:
url: jdbc:dm://127.0.0.1:52361/?bbb&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
username: bbb
password: bbb
driverClassName: dm.jdbc.driver.DmDriver
type: com.alibaba.druid.pool.DruidDataSource
## quartz定时任务,采用数据库方式
quartz:
job-store-type: jdbc
jdbc:
initialize-schema: never
# autoconfigure:
# exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
3,出错原因
这样基本上就适配完了,如果你的数据库有些SQL跑不起来,看一下是不是下面两个原因
3.1 数据库没有设置大小写不敏感
这个可以通过达梦的官方工具 “达梦数据库配置助手”新建或者修改实例,过程中设置大小写不敏感来解决,如果当前实例已经被使用且不可修改,可以换一个端口新建实例
之后就一直下一步就可以了。
3.2 有些SQL是别的数据库特有的,达梦没有。
比如mysql的正则表达式,时间函数,编辑距离等函数,虽然其他函数也有,但是函数名或者格式不太一样,这也程序运行就会出错,需要逐个修改,如果不知道对应的是达梦的哪个函数,可以的解决方式有
3.2.1 查看达梦数据库的函数文档
3.2.2 查看Oracle相关函数怎么用的,然后去达梦数据库里面试一下能不能用。虽然不知道达梦数据库怎么实现的,但是很多Oracle的函数在他的里面都可以运行,Oracle毕竟社区比较成熟,能搜到想要的函数