1.达梦数据库

达梦数据库管理系统:达梦官方提供的数据库可视化工具

1.1 官网下载安装包

官网下载windows安装包:https://www.dameng.com/list_103.html

在这里插入图片描述

1.2 安装

1.打开刚才下载的压缩包(不必解压,直接点击iso文件),再点击exe文件,点击确定

2.一直傻瓜式下一步,并选择安装路径,点击安装

在这里插入图片描述

1.3 初始化数据库

1.点击初始化按钮,进行初始化

在这里插入图片描述

2.点击开始按钮,开始创建数据库实例

在这里插入图片描述

3.创建数据库完成

在这里插入图片描述

1.4 打开可视化工具、连接数据库

1.按键盘windows键,点击DM管理工具

注意:安装完毕之后在开始菜单中,会有达梦自带的各种工具

DM服务查看器:类似windows自带的服务,其中只负责管理DM相关服务
DM管理工具:达梦自带的数据库工具,类似Navicat
DM控制台工具:用于管理数据库及数据库实例的各种参数,数据库实例备份和还原
DM审计分析工具:对数据库的操作做统计分析,可以自定义规则
DM数据库配置助手:对数据库实例做增删改查
DM数据迁移工具:从各种数据库、文件迁移到达梦
DM性能监视工具:监视使用情况、会话、事务

在这里插入图片描述

2.打开DM管理工具后,点击这个按钮,可进行数据库连接

在这里插入图片描述

在这里插入图片描述

3.出现这个窗口,填写数据库连接信息,点击测试按钮提示成功

在这里插入图片描述

4.出现这个窗口,表示数据库连接成功

在这里插入图片描述

2.若依集成mybatis-plus

2.1 步骤

1.打卡ruoyi-admin项目下的pom文件,加入以下依赖

<!--lombook-->
<dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
 </dependency>

2.打开ruoyi-common项目下的pom文件,加入以下依赖

 <!-- 集成mybatis-plus -->
<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-annotation</artifactId>
</dependency>

<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-annotation</artifactId>
   <version>3.5.1</version>
</dependency>

<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <scope>provided</scope>
</dependency>

3.打开ruoyi-quartz项目下的pom文件,加入以下依赖

 <!-- 集成mybatis-plus -->
<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-core</artifactId>
</dependency>

<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-core</artifactId>
   <version>3.5.1</version>
</dependency>

<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-extension</artifactId>
   <version>3.5.1</version>
</dependency>

<dependency>
   <groupId>com.ruoyi</groupId>
   <artifactId>ruoyi-system</artifactId>
</dependency>

<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
</dependency>

4.打开ruoyi-system项目下的pom文件,加入以下依赖

<!-- 集成mybatis-plus -->
<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-core</artifactId>
   <version>3.5.1</version>
</dependency>

<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-extension</artifactId>
   <version>3.5.1</version>
</dependency>

<dependency>
   <groupId>org.quartz-scheduler</groupId>
   <artifactId>quartz</artifactId>
</dependency>

5.打开根项目下的pom文件(就是最外边的那个pom文件)

<!-- 集成mybatis plus -->
<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-boot-starter</artifactId>
   <version>3.5.1</version>
</dependency>

<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-core</artifactId>
   <version>3.5.1</version>
</dependency>

<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus</artifactId>
   <version>3.5.1</version>
</dependency>

<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-annotation</artifactId>
   <version>3.5.1</version>
</dependency>

6.双击两下shift键,搜索MyBatisConfig类,注销这个类,添加下面的MybatisPlusConfig类

package com.ruoyi.framework.config;


import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;

@MapperScan(basePackages = {"com.ruoyi.**.mapper"})
@Configuration
@EnableAspectJAutoProxy(exposeProxy = true)
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 分页插件
        interceptor.addInnerInterceptor(paginationInnerInterceptor());
        // 乐观锁插件
        interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());
        // 防止全表更新与删除插件
        interceptor.addInnerInterceptor(blockAttackInnerInterceptor());
        return interceptor;
    }

    /**
     * 分页插件,自动识别数据库类型
     */
    public PaginationInnerInterceptor paginationInnerInterceptor() {
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
        // 设置数据库类型为mysql
        paginationInnerInterceptor.setDbType(DbType.MYSQL);
        // 设置最大单页限制数量,默认 500 条,-1 不受限制
        paginationInnerInterceptor.setMaxLimit(-1L);
        return paginationInnerInterceptor;
    }

    /**
     * 乐观锁插件
     */
    public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor() {
        return new OptimisticLockerInnerInterceptor();
    }

    /**
     * 如果是对全表的删除或更新操作,就会终止该操作
     */
    public BlockAttackInnerInterceptor blockAttackInnerInterceptor() {
        return new BlockAttackInnerInterceptor();
    }
}

2.2 使用QueryWrapper

2.2.1 service层:

集成前:public interface xxxRecordService

集成后:public interface xxxService extends IService

在service名称后面加上以下代码

 extends IService<实体类名称>
2.2.2 impl 实现接口类层

集成前:
public class xxxRecordServiceImpl implements xxxRecordService

集成后:
public class xxxRecordServiceImpl extends ServiceImpl<xxxMapper, xxx> implements xxxService

在实现类名称后面,implements前面去加上以下代码

xxxMapper:mapper层名称

xxx:实体类名称

extends ServiceImpl<xxxMapper xxx> 
2.2.3 Mapper层

集成前:
public interface xxxMapper

集成后:
public interface xxxMapper extends BaseMapper

在mapper名称后面加上以下代码

 extends BaseMapper<实体类名称>

3.达梦数据库-若依-国产化适配指南

适用范围:本指南适用于SpringBoot+Vue等前后端分离项目

3.1 数据库迁移

MySQL数据库迁移到DM数据库

3.1.1 创建用户

打开DM数据迁移工具,在用户 > 管理用户 > 右键新建用户

在这里插入图片描述

在这里插入图片描述

创建完用户之后,模式中就会出现一个和当前创建的用户名一样的模式出来

在这里插入图片描述

至此,一个新的数据库(Mysql中的数据库,DM里的模式)已经创建完毕

但此时这个用户还不具备对表增删改查的权利, 右键用户修改为它新增两项角色

在这里插入图片描述

3.1.2 从Mysql迁移到达梦

打开DM数据迁移工具,在空白处右键新建

在这里插入图片描述

新建工程取名+描述 => 进入工程 右键新建迁移

在这里插入图片描述

在这里插入图片描述

创建好了之后点击下一步

在这里插入图片描述

在这里插入图片描述

点击下一步之后填写用户名和密码,如果是高版本的Mysql,需要自行下载驱动

在这里插入图片描述

之后填写目标数据库(也就是达梦)的连接信息

在这里插入图片描述

看情况选择是否保持对象名大小写,如果不选则默认会是大写

在这里插入图片描述

选择目标模式,可以手填,后面勾选创建模式,如果不存在则会创建(选择若依的数据库)

在这里插入图片描述

点击选择,就会全选

在这里插入图片描述

点击下一步之后勾选以表格的方式现实执行任务

在这里插入图片描述

至此已迁移完毕

3.2 后端更换达梦数据源

将MySQL数据源更换为DM数据源

3.2.1 DM安装驱动

从官网中下载 达梦JDBC 驱动包

在这里插入图片描述

JDK 1.8对应的 JDBC 驱动包为:DmJdbcDriver18.jar

在这里插入图片描述

需要将 DmJdbcDriver18.jar 添加到本地的 maven 仓库中,从本地引用 DmJdbcDriver18.jar 的依赖,在 maven 打包的时候,可以正常被打入到整体包中

将 DmJdbcDriver18.jar copy 到一个指定的目录(如:D:\dm\)

在这里插入图片描述

将驱动包安装包本地 maven 仓库,执行如下命令:cmd

mvn install:install-file -DgroupId=dm.jdbc -DartifactId=DmJdbcDriver18 -Dversion=1.0 -Dpackaging=jar -Dfile=D:\dm\DmJdbcDriver18.jar

命令执行效果如下:

在这里插入图片描述

3.2.2 修改配置
JDBC依赖

修改项目中ruoyi-admin模块下的pom.xml文件

	<dependencies>       
        <!-- Mysql驱动包 -->
<!--        <dependency>-->
<!--            <groupId>mysql</groupId>-->
<!--            <artifactId>mysql-connector-java</artifactId>-->
<!--        </dependency>-->

        <!-- 达梦驱动包 -->
        <dependency>
            <groupId>com.dameng</groupId>
            <artifactId>Dm7JdbcDriver18</artifactId>
            <version>7.6.0.165</version>
        </dependency>
    </dependencies>
数据库连接池配置

修改项目中ruoyi-admin模块下的application-druid.yml文件;

# 数据源配置
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: dm.jdbc.driver.DmDriver
        druid:
            # 主库数据源
            master:
                url: jdbc:dm://[ip]:[port]/数据库名字
                username: SYSDBA
                password: ***
Pagehelper方言设置

修改如下

# PageHelper分页插件
pagehelper: 
  helperDialect: oracle
  supportMethodsArguments: true
  params: count=countSql 
3.2.3 适配DM不支持的SQL函数

1.replace into函数:记录在线用户功能,SysUserOnlineMapper里的saveOnline 方法,用到了不支持的replace into函数,需替换成merge into函数

原语句:

<insert id="saveOnline" parameterType="SysUserOnline">
    replace into sys_user_online(sessionId, login_name, dept_name, ipaddr, login_location, browser, os, status, start_timestamp, last_access_time, expire_time)
    values (#{sessionId}, #{loginName}, #{deptName}, #{ipaddr}, #{loginLocation}, #{browser}, #{os}, #{status}, #{startTimestamp}, #{lastAccessTime}, #{expireTime})
</insert>

修改后语句:

<insert id="saveOnline" parameterType="SysUserOnline">
	merge into sys_user_online
		using (select #{sessionId} sessionId, #{loginName} login_name, #{deptName} dept_name, #{ipaddr} ipaddr, #{loginLocation} login_location, #{browser} browser, #{os} os,
			              #{tatus} status, #{startTimestamp} start_timestamp, #{lastAccessTime} last_access_time, #{expireTime} expire_time from dual) d
			on sys_user_online.sessionId = d.sessionId
			when matched then
				update set sys_user_online.login_name = d.login_name, sys_user_online.dept_name = d.dept_name, sys_user_online.ipaddr = d.ipaddr,
				    sys_user_online.login_location = d.login_location, sys_user_online.browser = d.browser, sys_user_online.os = d.os, sys_user_online.status = d.status,
				    sys_user_online.start_timestamp = d.start_timestamp, sys_user_online.last_access_time = d.last_access_time, sys_user_online.expire_time = d.expire_time
			when not matched then
				insert (sessionId, login_name, dept_name, ipaddr, login_location, browser, os, status, start_timestamp, last_access_time, expire_time)
				    values(d.sessionId, d.login_name, d.dept_name, d.ipaddr, d.login_location, d.browser, d.os, d.status, d.start_timestamp, d.last_access_time, d.expire_time)
</insert>

2.find_in_set:部门管理,SysDeptMapper里用到了不支持的find_in_set函数,可替换成instr函数

示例如下:

-- 原函数
find_in_set(#{deptId}, ancestors)
-- 新函数
instr(','||ancestors||',' ,  ','|| #{deptId} ||',') 

3.在system模块的xml的mapper文件夹内找到SysMenuMapper.xml,这个文件中的query加了``,在mysql中是关键字,我们要将这个引号去掉就好了

在这里插入图片描述

4.在system模块的xml的mapper文件夹内找到SysNoticeMapper.xml,其中的sql标签内有一个cast函数,它的作用是将结果转为对应类型,在达梦里需要给一个长度,填写稍大一点即可。

在这里插入图片描述

至此数据就迁移完成,启动项目,运行成功!

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐