一、原有架构采用mysql,由于信创环境,需要更换国产的数据库

步骤如下

1、确定JDK版本选择对应的达梦数据库版

/**************************************** 达梦8 JDBC驱动版本说明
/***************************************
1. DmJdbcDriver16 对应 Jdk1.6 及以上环境
2. DmJdbcDriver17 对应 Jdk1.7 及以上环境
3. DmJdbcDriver18 对应 Jdk1.8 及以上环境/**************************************** 达梦8 hibernate方言包对应版本说明
/***************************************
jar包在dialect目录下:
1. DmDialect-for-hibernate2.0.jar  对应 Jdk1.4及以上, hibernate2.0 环境
2. DmDialect-for-hibernate2.1.jar  对应 Jdk1.4及以上, hibernate2.1 -- 2.X 环境
3. DmDialect-for-hibernate3.0.jar  对应 Jdk1.4及以上, hibernate3.0 环境
4. DmDialect-for-hibernate3.1.jar  对应 Jdk1.4及以上, hibernate3.1 -- 3.5 环境
5. DmDialect-for-hibernate3.6.jar  对应 Jdk1.5及以上, hibernate3.6 -- 3.X 环境
6. DmDialect-for-hibernate4.0.jar  对应 Jdk1.6及以上, hibernate4.0 -- 4.X 环境
7. DmDialect-for-hibernate5.0.jar  对应 Jdk1.7及以上, hibernate5.0 -- 5.2 环境
8. DmDialect-for-hibernate5.3.jar  对应 Jdk1.7及以上, hibernate5.3 -- 5.4 环境注1:以上的hibernate版本指的是hibernate ORM版本,注意区分hibernate search版本/**************************************** Hibernate.cfg.xml配置说明
/***************************************
1、驱动名称<property name="connection.driver_class">dm.jdbc.driver.DmDriver</property>2、方言包名称<property name="dialect">org.hibernate.dialect.DmDialect</property>/**************************************** 其他jar包说明
/***************************************
1. DmDictionary.jar                 openjpa1.2方言包,对应 Jdk1.6及以上环境
2. dmjooq-dialect-3.12.3.jar        jooq方言包,对应 Jdk1.8及以上环境
3. dm8-oracle-jdbc16-wrapper.jar    oracle 到达梦的JDBC驱动桥接,应用中如果使用了非标准的oracle JDBC特有的对象,无需修改应用代码,可以桥接到达梦的JDBC连接达梦数据库,对应 Jdk1.6及以上环境
4. DmHibernateSpatial-1.0.jar       hibernate spatial方言包,对应hibernate spatial 1.0环境,对应 Jdk1.5及以上环境
5. DmHibernateSpatial-1.1.jar       hibernate spatial方言包,对应hibernate spatial 1.1环境,对应 Jdk1.5及以上环境
6. gt-dameng-2.8.jar                GeoServer 2.8环境方言包,对应 Jdk1.6及以上环境
7. gt-dameng-2.11.jar               GeoServer 2.11环境方言包,对应 Jdk1.8及以上环境
8. gt-dameng-2.15.jar               GeoServer 2.15环境方言包,对应 Jdk1.8及以上环境/**************************************** maven仓库下载
/***************************************
group id: com.dameng
各版本jar查找网址: https://search.maven.org/search?q=com.dameng
maven依赖配置示例: <dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.1.193</version></dependency>

2、修改yml配置文件,主要更改驱动和连接

spring:datasource:driver-class-name: dm.jdbc.driver.DmDriverurl: jdbc:dm://127.0.0.1:5236/ROOT?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8username: ROOTpassword: xxxx

3、启动程序,这个时候会报错

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:595)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1108)at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:868)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)at top.cfl.cflwork.GeneralarchivesApplication.main(GeneralarchivesApplication.java:25)
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:275)at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237)at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152)at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286)at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243)at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:176)at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:118)at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1202)at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1233)at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58)at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365)at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:391)at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:378)at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1855)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1792)... 14 common frames omitted
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not setat org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:100)at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:54)at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:137)at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:101)at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)... 31 common frames omitted
Disconnected from the target VM, address: '127.0.0.1:61683', transport: 'socket'

4、查问题,是因为没有配置断言

spring:datasource:driver-class-name: dm.jdbc.driver.DmDriverurl: jdbc:dm://127.0.0.1:5236/ROOT?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8username: ROOTpassword: cfl,19971997jpa:properties:hibernate:dialect: org.hibernate.dialect.DmDialectshow-sql: true

5、重启,成功

6、达梦数据库语法总结

以下介绍来自于达梦数据库官网,相关的文档在官网中也是可以下载的。达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM,它具有如下特点:1、通用性达梦数据库管理系统兼容多种硬件体系,可运行于X86、X64、SPARC、POWER等硬件体系之上。DM各种平台上的数据存储结构和消息通信结构完全一致,使得DM各种组件在不同的硬件平台上具有一致的使用特性。达梦数据库管理系统产品实现了平台无关性,支持Windows系列、各版本Linux(2.4及2.4以上内核)、Unix、Kylin、AIX、Solaris等各种主流操作系统。达梦数据库的服务器、接口程序和管理工具均可在32位/64 位版本操作系统上使用。2、高性能支持列存储、数据压缩、物化视图等面向联机事务分析场景的优化选项;通过表级行存储、列存储选项技术,在同一产品中提供对联机事务处理和联机分析处理业务场景的支持;3、高可用可配置数据守护系统(主备),自动快速故障恢复,具有强大的容灾处理能力。4、跨平台跨平台,支持主流软硬件体系(支持windows、Linux、中标麒麟、银河麒麟等操作系统),支持主流标准接口。5、高可扩展支持拓展软件包和多种工具,实现海量数据分析处理、数据共享集群(DSC)和无共享数据库集群(MPP)等扩展功能与MySQL的区别
1. 创建表的时候,不支持在列的后面直接加 comment 注释,使用 COMMENT ON  IS 代替,如:COMMENT ON TABLE xxx IS xxxCOMMENT ON COLUMN xxx IS xxx2. 不支持 date_sub 函数,使用 dateadd(datepart,n,date) 代替,其中,datepart可以为:year(yy,yyyy),quarter(qq,q),month(mm,m),dayofyear(dy,y),day(dd,d),week(wk,ww),weekday(dw),hour(hh),         minute(mi,n), second(ss,s), millisecond(ms)例子:select dateadd(month, -6, now());select dateadd(month, 2, now());3. 不支持 date_format 函数,它有三种代替方法:a:  使用 datepart 代替:语法:datepart(datepart, date),返回代表日期的指定部分的整数,datepart可以为:year(yy,yyyy),quarter(qq,q),month(mm,m),dayofyear(dy,y),day(dd,d),week(wk,ww),weekday(dw),hour(hh),                   minute(mi,n),second(ss,s), millisecond(ms)例子:select datepart(year, '2018-12-13 08:45:00'); --2018select datepart(month, '2018-12-13 08:45:00'); --12b: 使用 date_part 代替,功能和 datepart 一样,写法不同,参数顺序颠倒,且都要加引号,例子:select date_part('2018-12-13 08:45:00', 'year');--2018select date_part('2018-12-13 08:45:00', 'mm'); -- 12c:  使用 extract 代替,语法:extract(dtfield from date),从日期类型date中抽取dtfield对应的值dtfield 可以是 year,month,day,hour,minute,second例子:select extract(year from  '2018-12-13 08:45:00'); --2018select extract(month from  '2018-12-13 08:45:00'); --124.  不支持 substring_index 函数, 使用 substr / substring 代替,语法:substr(char[,m[,n]])substring(char[from m[ for n]])5. 不支持 group_concat 函数,使用 wm_concat 代替,例子:select wm_concat(id) as idstr from persion ORDER BY id ;6. 不支持 from_unixtime 函数,使用 round 代替语法:round(date[,format])7. 不支持 case-when-then-else ,例如:select case  when id = 2 then "aaa" when id = 3 then "bbb" else "ccc" end as testfrom (select id from person) tt;8. current_timestamp 的返回值带有时区,例子:select current_timestamp();2018-12-17 14:34:18.433839 +08:009. convert(type, value) 函数,与 mysql 的 convert 一样,但是参数是反过来的,mysql 是 convert(value, type)10.  不支持 on duplicate key update,使用 merge into 代替11. 不支持 ignore,即 insert ignore  into12. 不支持 replace into,使用 merge into 代替13. 不支持 if。14.  不支持 "",只支持''15. 不支持 auto_increment, 使用 identity 代替如: identity(1, 1),从 1 开始,每次增 116. 不支持 longtext 类型,可用 CLOB 代替。总结
达梦数据库和 oracle 数据库比较像,如果找不到和 MySQL 对应的函数,可以看下 oracle 的相关函数。

Springboot + 国产达梦数据库相关推荐

  1. 纯国产环境JAVA程序(Springboot + Mybatis + 达梦数据库)搭建

    目录 JAVA程序搭建 前言 达梦数据库安装(WINDOWS) SpringBoot项目搭建 整合达梦数据库 源码 总结 JAVA程序搭建 前言 写在前面: 文章满满干货,每一步都是自己从零开始操作并 ...

  2. 达梦DCA之SpringBoot集成达梦数据库

    受"华为.中兴事件"影响,我国科技尤其是上游核心技术受制于人的现状对我国经济发展.社会稳定等都提出了严峻考验.大力发展科技产业,鼓励科技创新,成为当下时不我待的命题.中美贸易战以来 ...

  3. 基于Enterprise Library的Winform开发框架实现支持国产达梦数据库的扩展操作

    由于一个客户朋友的需求,需要我的Winform开发框架支持国产达梦数据库的操作,这个数据库很早就听过,但是真正一般项目用的很少,一般在一些特殊的项目可能需要用到.由于我的Winform开发框架,是基于 ...

  4. 国产达梦数据库学习笔记(一):NeoKylin7.0安装及配置与常用基础命令

    国产达梦数据库学习笔记(一):NeoKylin7.0安装及配置与常用基础命令 以VMware Workstation Pro 15环境下的NeoKylin7.0与DM8为例 中标麒麟系统NeoKyli ...

  5. shell脚本备份国产达梦数据库

    shell脚本备份国产达梦数据库代码如下: 1.配置文件: username=SYSDBA password=SSSTTTSSS ipStr=localhost portNumber=5327 bac ...

  6. springboot+mybatisplus+达梦数据库

    springboot+mybatisplus+达梦数据库 1 达梦安装 2 springboot项目适配 2.1 pom依赖 2.2 数据库配置信息 3 注意事项 4 问题汇总 4.1 dbType ...

  7. springboot连接达梦数据库

    springboot连接达梦数据库 这次实战主要说springboot项目连接达梦数据库. 先准备好达梦数据库的驱动包,如下: 在执行maven命令把该驱动包安装到自己的maven仓库,命令如下: m ...

  8. 开源盛行:为什么学习国产达梦数据库?

    开源盛行:为什么学习国产达梦数据库? 武汉达梦数据库股份有限公司成立于2000年,是国内领先的数据库产品开发服务商,国内数据库基础软件产业发展的关键推动者.公司为客户提供各类数据库软件及集群软件.云计 ...

  9. oracle向达梦迁移工作量,从Oracle安全移植到国产达梦数据库的DBA实践

    随着我国对信息安全和自主可控技术的日益重视,国产数据库在党政机关.军队和大型央企等行业中得到了快速应用.达梦数据库(以下简称DM)是国内数据库行业领军企业--达梦推出的一款自主可控的高性能数据库产品. ...

最新文章

  1. 企业信息化所面临的问题
  2. sql随机实现,sql GUID
  3. CISCO IP nat 常用命令及原理详解
  4. 【收藏】批量导出docker镜像
  5. 如何降低90%Java垃圾回收时间?以阿里HBase的GC优化实践为例
  6. 如何搭建一个简易的Web框架
  7. 常见优化算法批量梯度下降、小批量梯度下降、随机梯度下降的对比
  8. 登录页面test记录
  9. JDK 10:从Java访问Java应用程序的进程ID
  10. select 与case 以及函数练习
  11. Jquery之AJAX用户注册表单验证(Vancl版)
  12. 在布局空间标注的尺寸量不对_装修公司为什么要量房?量房到底在量什么?又该注意什么?...
  13. 第十章 Scala 容器基础(二十二):合并有序集合
  14. python提取国家名称缩写_pycountries:转换国家名称(可能不完整!)国家代码
  15. 阻塞IO和NIO的区别
  16. 基于eNSP的千人中型校园企业网络设计与规划(可以自己按步骤实现)
  17. 【深度学习算法原理】Deep Structured Semantic Models(DSSM)
  18. 2010年北京大学软件与微电子学院毕业生就业去向(官方不完全统计)
  19. QT C++ Luhn算法验证银行卡号合法性
  20. 04_从啤酒与尿布,聊关联规则推荐

热门文章

  1. 微信小程序动态获取时间
  2. linux edt时间是什么,edt时间(edt时间 现在)
  3. centos 时间自动同步_CentOS/Linux 自动同步服务器时间。
  4. 用shader做水波纹效果
  5. 2020计算机统考题,2020年计算机基础考试题LT含答案-2020计算机考证题
  6. 计算机属性无法查看无反应,u卫士win7右键点击查看计算机属性没反应怎么办
  7. Gitolite轻松部署/管理git server
  8. 文献解读|气管抽吸物RNA测序可识别COVID-19 ARDS的不同免疫学特征
  9. 零基础自学网络安全/网络渗透攻防路线学习方法【建议收藏】
  10. windows server2012安全测评整改操作系统配置