SpringBoot Mysql->达梦8 activiti6.0.0 项目迁移

 全部源码:公众号搜索资小库,回复dm获取源码

1.整合达梦

1.1 达梦驱动下载

MyBatis-Plus 框架 | 达梦技术文档 (dameng.com)

1.2 数据迁移

怎么安装数据库,很多大佬有帖子,搜一下达梦先建立用户,使用DM管理工具

链接数据库

输入用户名密码等,再创建用户,咱这边用户和数据库名称保持一致,这样就可以不加数据库头了我们的SQL,并赋予一定权限

使用DM数据迁移工具进行数据迁移,先新建迁移,然后下一步下一步,数据就迁移完了

1.2安装驱动

将DmJdbcDriver18.jar移动到你觉得合适的地方,我这边移动到了

${project.basedir}/src/lib/DmJdbcDriver18.jar 这个地方

1.3 pom准备

删除mysql驱动,全局搜索xml类型的文件内容"mysql-",删除mysql的相关依赖,怕出错不想删除也行,增加达梦驱动

        <dependency><groupId>com.dm</groupId><artifactId>Dm18JdbcDriver</artifactId><version>1.8</version><scope>system</scope><systemPath>${project.basedir}/src/lib/DmJdbcDriver18.jar</systemPath></dependency>

1.4 yml修改

        driverClassName: dm.jdbc.driver.DmDriverurl: jdbc:dm://127.0.0.1:5236/BIMS_SAAS?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&nullCatalogMeansCurrent=trueusername: BIMS_SAASpassword: xxxxx

至此达梦就整合完了

2.activiti整合达梦

主要是4个文件,但是源码中和你在class中copy的代码不是很相同,我们使用源码中的代码,

以下文件,目录结构自己看图

ProcessEngineConfigurationImpl增加对DM的支持

  public static final String DATABASE_TYPE_DM = "dm";public static Properties getDefaultDatabaseTypeMappings() {Properties databaseTypeMappings = new Properties();databaseTypeMappings.setProperty("DM DBMS", DATABASE_TYPE_DM);}

这里修改成Oracle,因为达梦对oracle支持不错

        if (databaseType != null) {if (ProcessEngineConfigurationImpl.DATABASE_TYPE_DM.equals(databaseType)){databaseType = ProcessEngineConfigurationImpl.DATABASE_TYPE_ORACLE;}properties.load(getResourceAsStream("org/activiti/db/properties/"+databaseType+".properties"));}

DbSqlSession

这个地方要改一下,也是让他支持Oracle

  public String getResourceForDbOperation(String directory, String operation, String component) {String databaseType = dbSqlSessionFactory.getDatabaseType();if (ProcessEngineConfigurationImpl.DATABASE_TYPE_DM.equals(databaseType)){databaseType = ProcessEngineConfigurationImpl.DATABASE_TYPE_ORACLE;}return "org/activiti/db/" + directory + "/activiti." + databaseType + "." + operation + "." + component + ".sql";}

DbSqlSessionFactory 

也是选择Oracle

  protected void initBulkInsertEnabledMap(String databaseType) {bulkInsertableMap = new HashMap<Class<? extends Entity>, Boolean>();for (Class<? extends Entity> clazz : EntityDependencyOrder.INSERT_ORDER) {bulkInsertableMap.put(clazz, Boolean.TRUE);}// Only Oracle is making a fuss in one specific case right nowif ("oracle".equals(databaseType) || "dm".equals(databaseType)) {bulkInsertableMap.put(EventLogEntryEntityImpl.class, Boolean.FALSE);}}

AbstractQuery

增加对dm支持

if (nullHandlingOnOrder != null) {if (nullHandlingOnOrder.equals(NullHandlingOnOrder.NULLS_FIRST)) {if (ProcessEngineConfigurationImpl.DATABASE_TYPE_H2.equals(databaseType) || ProcessEngineConfigurationImpl.DATABASE_TYPE_HSQL.equals(databaseType)|| ProcessEngineConfigurationImpl.DATABASE_TYPE_POSTGRES.equals(databaseType) || ProcessEngineConfigurationImpl.DATABASE_TYPE_ORACLE.equals(databaseType)|| ProcessEngineConfigurationImpl.DATABASE_TYPE_DM.equals(databaseType)) {orderBy = orderBy + defaultOrderByClause + " NULLS FIRST";} else if (ProcessEngineConfigurationImpl.DATABASE_TYPE_MYSQL.equals(databaseType)) {orderBy = orderBy + "isnull(" + column + ") desc," + defaultOrderByClause;} else if (ProcessEngineConfigurationImpl.DATABASE_TYPE_DB2.equals(databaseType) || ProcessEngineConfigurationImpl.DATABASE_TYPE_MSSQL.equals(databaseType)) {orderBy = orderBy + "case when " + column + " is null then 0 else 1 end," + defaultOrderByClause;} else {orderBy = orderBy + defaultOrderByClause;}} else if (nullHandlingOnOrder.equals(NullHandlingOnOrder.NULLS_LAST)) {if (ProcessEngineConfigurationImpl.DATABASE_TYPE_H2.equals(databaseType) || ProcessEngineConfigurationImpl.DATABASE_TYPE_HSQL.equals(databaseType)|| ProcessEngineConfigurationImpl.DATABASE_TYPE_POSTGRES.equals(databaseType) || ProcessEngineConfigurationImpl.DATABASE_TYPE_ORACLE.equals(databaseType)||ProcessEngineConfigurationImpl.DATABASE_TYPE_DM.equals(databaseType)) {orderBy = orderBy + column + " " + sortOrder + " NULLS LAST";} else if (ProcessEngineConfigurationImpl.DATABASE_TYPE_MYSQL.equals(databaseType)) {orderBy = orderBy + "isnull(" + column + ") asc," + defaultOrderByClause;} else if (ProcessEngineConfigurationImpl.DATABASE_TYPE_DB2.equals(databaseType) || ProcessEngineConfigurationImpl.DATABASE_TYPE_MSSQL.equals(databaseType)) {orderBy = orderBy + "case when " + column + " is null then 1 else 0 end," + defaultOrderByClause;} else {orderBy = orderBy + defaultOrderByClause;}}

pom

        <dependency><groupId>javax.persistence</groupId><artifactId>javax.persistence-api</artifactId></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>5.3.7.Final</version><exclusions><exclusion><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId></exclusion></exclusions></dependency>

yml

# 数据源配置
spring:jpa:properties:hibernate:dialect: org.hibernate.dialect.Oracle10gDialectshow-sql: ture

这样第一次启动应该可以启动创建表了,启动不起来多半是一些SQL或者其他JAVA问题不兼容导致的

第一次执行完,关闭activiti更新表

spring:  activiti:check-process-definitions: false# 检测身份信息表是否存在db-identity-used: falsedatabase-schema-update: none

  关注公众号:资小库,问题快速答疑解惑

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/387109.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server 数据误删的恢复

在日常的数据库管理中&#xff0c;数据的误删操作是难以避免的。为了确保数据的安全性和完整性&#xff0c;我们必须采取一些措施来进行数据的备份和恢复。本文将详细介绍如何在 SQL Server 中进行数据的备份和恢复操作&#xff0c;特别是在发生数据误删的情况下。假设我们已经…

使用visual studio编译C++项目时无法找到 enum中的某些项

vs 2017 编译一个cocos2dx 的老项目时&#xff0c;报错&#xff1a; 在项目中搜索关键字 ARMATURE_LOOP_COMPLETE&#xff0c;发现在文件EventType.h中是有定义的&#xff0c;是 enum Event 的一项&#xff0c;而且确认了报错的文件已经引入了这个头文件&#xff1a; 这太奇怪了…

傻瓜式PHP-Webshell免杀学习手册,零基础小白也能看懂

项目描述 一、PHP相关资料 PHP官方手册&#xff1a; https://www.php.net/manual/zh/ PHP函数参考&#xff1a; https://www.php.net/manual/zh/funcref.php 菜鸟教程&#xff1a; https://www.runoob.com/php/php-tutorial.html w3school&#xff1a; https://www.w3school…

【React】全面解析:从基础知识到高级应用,掌握现代Web开发利器

文章目录 一、React 的基础知识1. 什么是 React&#xff1f;2. React 的基本概念3. 基本示例 二、React 的进阶概念1. 状态&#xff08;State&#xff09;和属性&#xff08;Props&#xff09;2. 生命周期方法&#xff08;Lifecycle Methods&#xff09;3. 钩子&#xff08;Hoo…

Spring Cloud微服务项目统一封装数据响应体

在微服务架构下&#xff0c;处理服务之间的通信和数据一致性是一个重要的挑战。为了提高开发效率、保证数据的一致性及简化前端开发&#xff0c;统一封装数据响应体是一种非常有效的实践。本文博主将介绍如何在 Spring Cloud 微服务项目中统一封装数据响应体&#xff0c;并分享…

ValueError: invalid literal for int() with base 10: ‘a‘

ValueError: invalid literal for int() with base 10: ‘a‘ 目录 ValueError: invalid literal for int() with base 10: ‘a‘ 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff…

基于web3区块链的名酒资产数字化、个人闲置资产收藏系统,实现联盟链、NFT数据上链、智能合约开发

系统背景&#xff1a; 国内有众多历史悠久却极具收藏价值的名酒品类&#xff0c;但是传统名酒投资存在着保真、流通和收藏三大痛点&#xff0c;极大影响了名酒产业的发展。基于区块链的分布式、不可篡改、可追溯、透明性、多方维护、交叉验证等特性&#xff0c;数据权属可以被有…

【Linux】软连接|硬链接|当前路径(.)|上级路径(..)|硬链接不能链接目录

目录 前言 软连接 ​编辑 删除源文件 快捷应用 总结 硬链接 硬链接为何不能链接目录 为什么软连接可以 软硬链接区别 当前路径(.)和上级路径(..) ​编辑 前言 在 Linux 中&#xff0c;文件的存储位置和数据&#xff08;属性内容&#xff09;是由 inode 号来唯一标…

错误:请查看是否设备未加入到证书列表或者确认证书类型是否匹配

这个问题实际上网上都有解法&#xff0c;但是可能没有那么的清楚&#xff0c;大家在各种问&#xff0c;我既然搞定了&#xff0c;就分享给大家吧网上解法&#xff1a; 开发调试需要另外创建开发证书和描述文件&#xff0c;描述文件同时绑定开发设备解读&#xff1a; 实际上这句…

electron 主进程和渲染进程

最近在整理electron 相关的项目问题&#xff0c;对自己来说也是温故知新&#xff0c;也希望能对小伙伴们有所帮助&#xff0c;大家共同努力共同进步。加油&#xff01;&#xff01;&#xff01;&#xff01; 虽然最近一年前端大环境不好&#xff0c;但是大家还是要加油鸭&#…

SmartInitializingSingleton和InitializingBean的区别

SmartInitializingSingleton&#xff1a;接口里面就一个方法afterSingletonsInstantiated&#xff0c;它是spring容器将所有bean都初始化完成之后&#xff0c;才会去调用&#xff0c;要求实现它接口的bean必须是单例的。 应用场景&#xff1a;可以在服务启动之后去处理一些逻辑…

科普文:从源码解读5种Redis基本数据类型

键值对字符串 char* 与 SDS char* 的不足&#xff1a; 操作效率低&#xff1a;获取长度需遍历&#xff0c;O(N)复杂度 二进制不安全&#xff1a;无法存储包含 \0 的数据 SDS 的优势&#xff1a; 操作效率高&#xff1a;获取长度无需遍历&#xff0c;O(1)复杂度&#xff08…

60个常见的 Linux 指令

常见60个Linux指令 1.ssh 登录到计算机主机2.ls 列出目录内容3.pwd 当前终端会话所在的完整路径4.cd 切换当前工作目录5.touch 创建空文件或更新文件的时间戳6.echo 终端输出文本或变量值7.nano 在终端中编辑文件8.vim 文本编辑器9.cat 查看、连接和创建文件10.shred 安全删除敏…

XPathParser类

XPathParser类是mybatis对 javax.xml.xpath.XPath的包装类。 接下来我们来看下XPathParser类的结构 1、属性 // 存放读取到的整个XML文档private final Document document;// 是否开启验证private boolean validation;// 自定义的DTD约束文件实体解析器&#xff0c;与valida…

科研绘图系列:R语言山脊图(Ridgeline Chart)

介绍 山脊图(Ridge Chart)是一种用于展示数据分布和比较不同类别或组之间差异的数据可视化技术。它通常用于展示多个维度或变量之间的关系,以及它们在不同组中的分布情况。山脊图的特点: 多变量展示:山脊图可以同时展示多个变量的分布情况,允许用户比较不同变量之间的关…

FastAPI(七十二)实战开发《在线课程学习系统》接口开发-- 留言列表开发

源码见&#xff1a;"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 之前我们分享了FastAPI&#xff08;七十一&#xff09;实战开发《在线课程学习系统》接口开发-- 查看留言&#xff0c;这次我们分享留言列表开发。 获…

i2c中结构体 数据传输 i2c Tools使用

I2C中重要结构体 在I2C&#xff08;Inter-Integrated Circuit&#xff09;通信中&#xff0c;涉及的主要结构体通常用于描述设备、消息和传输的配置。以下是一些常见的I2C结构体及其作用&#xff1a; i2c_adapter: 这是一个代表I2C总线适配器的结构体。它包含与该I2C总线相关的…

Hive3:Centos7环境部署Hive服务

一、安装说明 1、Hadoop集群情况 3台机器&#xff1a;4G2C、2G2C、2G2C 安装教程&#xff1a;Centos7环境安装Hadoop集群 2、安装MySQL&#xff0c;用于存储Hive的元数据 在102机器上安装MySQL 安装MySQL使用服务器的root账号 3、最后安装Hive 安装hive过程使用服务器的atgu…

dpdk编译安装以及接收udp报文(基于ubuntu)

目录 1、编译 2、设置运行环境 3、使用dpdk接收udp报文 3.1、设置发送端arp信息 3.2、测试 3.3、代码 4、其他 1、编译 代码下载&#xff1a; DPDK 下载版本&#xff1a;DPDK 19.08.2 export RTE_SDK/root/dpdk-stable-19.08.2/ export RTE_TARGETx86_64-native-li…

STM32简介

1.STM32的三个重要特征 32位微控制器&#xff0c;也称作MCU。 由ST&#xff08;意法半导体&#xff09;公司开发。 以ARM-Cortex-M为核心。 2.STM32的优点 3.ARM ARM是RISC精简指令集的代表&#xff0c;很多移动设备都是基于ARM架构的。ARM自2004年以后放弃使用数字命名法…