将SpringBoot项目的数据库从MySQL迁移到达梦

1.安装达梦数据库

1.加载达梦镜像
docker load -i dm8_20240715_x86_rh6_rq_single.tar

#2.创建挂载目录
mkdir E:\development_sources\docker\dm\data

#3.创建dm8容器
docker run -d -p 5236:5236 --restart=always --name dm8 --privileged=true -e CASE_SENSITIVE=0 -e UNICODE_FLAG=1 -e LENGTH_IN_CHAR=1 -e PAGE_SIZE=16 -e LD_LIBRARY_PATH=/opt/dmdbms/bin -e INSTANCE_NAME=dm8 -v E:\development_sources\docker\dm\data:/opt/dmdbms/data dm8_single:dm8_20240715_rev232765_x86_rh6_64

2.迁移数据表到达梦

(1).打开官方的数据迁移工具,创建迁移任务,达梦数据库的账号为SYSDBA,密码为SYSDBA001,操作界面如下图:
在这里插入图片描述
(2).设置数据源MySQL数据库的信息,如下图:
在这里插入图片描述
(3).设置目的达梦数据库的信息,如下图:
在这里插入图片描述
(4).配置获取对象的方式和迁移策略,如下图:
在这里插入图片描述
(5).选择模式,如下图:
在这里插入图片描述
(6).选择模式对象,如下图:
在这里插入图片描述
(7).迁移信息预览,如下图:
在这里插入图片描述
(8).完成迁移任务,查看迁移的结果,如下图:
在这里插入图片描述
(9).在达梦数据管理工具中查看表结构,如下图:
在这里插入图片描述

3.创建SpringBoot项目连接达梦实现简单CRUD

(1).在pom.xml文件中加上依赖,完整的pom文件如下,仅供参考

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>2.7.15</version>
       <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <groupId>com.luozheng</groupId>
   <artifactId>dm</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>dm</name>
   <description>这是一个展示达梦数据库使用方式的简单demo,技术栈为达梦+SpringBoot+Mybatis-Plus+简单的CRUD</description>

   <properties>
       <java.version>1.8</java.version>
   </properties>

   <dependencies>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter</artifactId>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-test</artifactId>
           <scope>test</scope>
           <exclusions>
               <exclusion>
                   <groupId>org.junit.vintage</groupId>
                   <artifactId>junit-vintage-engine</artifactId>
               </exclusion>
           </exclusions>
       </dependency>
       <!-- 达梦驱动 -->
       <dependency>
           <groupId>com.dameng</groupId>
           <artifactId>DmJdbcDriver18</artifactId>
           <version>8.1.2.192</version>
       </dependency>
       <!--lombok -->
       <dependency>
           <groupId>org.projectlombok</groupId>
           <artifactId>lombok</artifactId>
           <version>1.18.30</version>
           <scope>provided</scope>
       </dependency>
       <!--mybatis-plus-->
       <dependency>
           <groupId>com.baomidou</groupId>
           <artifactId>mybatis-plus-boot-starter</artifactId>
           <version>3.5.2</version>
       </dependency>
       <!--mybatis-plus-generator 生成器-->
       <dependency>
           <groupId>com.baomidou</groupId>
           <artifactId>mybatis-plus-generator</artifactId>
           <version>3.5.2</version>
       </dependency>
       <dependency>
           <groupId>org.freemarker</groupId>
           <artifactId>freemarker</artifactId>
           <version>2.3.31</version>
       </dependency>
   </dependencies>

   <build>
       <plugins>
           <plugin>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
           </plugin>
       </plugins>
   </build>
</project>

(2).在项目的application.yml中配置达梦数据库和mybatis-plus,完成的yml文件如下

#配置达梦数据库
spring:
datasource:
  driver-class-name: dm.jdbc.driver.DmDriver
  url: jdbc:dm://localhost:5236
  username: SYSDBA
  password: SYSDBA001
mybatis-plus:
mapper-locations: classpath*:mappers/**/*Mapper.xml
global-config:
  db-config:
    update-strategy: NOT_NULL
server:
port: 8080

(3).使用MybatisPlus的代码生成器来生成entity,mapper,mappers,service,serviceImpl,controller,在包com.luozheng.dm.util下新建一个代码生成器启动类CodeGenerator.java,具体代码如下如下:

package com.luozheng.dm.util;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.nio.file.Paths;
import java.util.Collections;

public class CodeGenerator {
   public static void main(String[] args) {
       FastAutoGenerator.create("jdbc:dm://localhost:5236", "SYSDBA", "SYSDBA001")
              .globalConfig(builder -> builder
                      .author("luozheng")
                      .outputDir(Paths.get(System.getProperty("user.dir")) + "/src/main/java")
                      .dateType(DateType.ONLY_DATE) // 设置时间类型策略
                      .commentDate("yyyy-MM-dd") // 设置注释日期格式
                      .disableOpenDir()
              )
              .packageConfig(builder -> builder
                      .parent("com.luozheng.dm")
                      .entity("entity")
                      .mapper("mapper")
                      .service("service")
                      .serviceImpl("service.impl")
//                       .xml("mapper.mappers")
                      .controller("controller")
                      .pathInfo(Collections.singletonMap(OutputFile.xml, "src/main/resources/mappers"))
              )
              .strategyConfig(builder -> builder
                      .addInclude("user")
                      .entityBuilder()
                      .columnNaming(NamingStrategy.underline_to_camel)
                      .enableLombok()
                      .mapperBuilder()
                      .enableBaseResultMap()
                      .enableBaseColumnList()
                      .serviceBuilder()
                      .formatServiceFileName("%sService")
                      .controllerBuilder()
                      .enableRestStyle()
              )
              .templateEngine(new FreemarkerTemplateEngine())
              .execute();
  }
}

(4).在service层,serviceImpl层和controller层添加代码实现简单的CRUD功能

package com.luozheng.dm.service;

import com.luozheng.dm.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;

public interface UserService extends IService<User> {
   public List<User> getAllUser();
   public User getUserById(int id);
   public void insertUser(User user);
   public void updateUserById(User user);
   public void deleteById(int id);
}
package com.luozheng.dm.service.impl;

import com.luozheng.dm.entity.User;
import com.luozheng.dm.mapper.UserMapper;
import com.luozheng.dm.service.UserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
   @Resource
   private UserMapper userMapper;
   @Override
   public List<User> getAllUser() {
       return userMapper.selectList(null);
  }
   @Override
   public void deleteById(int id) {
       userMapper.deleteById(id);
  }
   @Override
   public User getUserById(int id) {
       return userMapper.selectById(id);
  }
   @Override
   public void insertUser(User user) {
       userMapper.insert(user);
  }
   @Override
   public void updateUserById(User user) {
       userMapper.updateById(user);
  }
}
package com.luozheng.dm.controller;

import com.luozheng.dm.entity.User;
import com.luozheng.dm.service.UserService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {
   @Resource
   private UserService userService;

   @GetMapping("/getAllUser")
   public List<User> getAllUser() {
       return userService.getAllUser();
  }

   @GetMapping("/getUserById")
   public User getUserById(int id) {
       return userService.getUserById(id);
  }

   @PostMapping("/insertUser")
   public void insertUser(User user) {
       userService.insertUser(user);
  }

   @PostMapping("/updateUserById")
   public void updateUserById(User user) {
       userService.updateUserById(user);
  }

   @PostMapping("/deleteById")
   public void deleteById(int id) {
       userService.deleteById(id);
  }
}

(5).在启动类上面加上注解@MapperScan(“com.luozheng.dm.mapper”),并启动SpringBoot项目

4.使用apifox测试接口

(1).测试getAllUser接口

在这里插入图片描述

(2).测试getUserById接口

在这里插入图片描述

(3).测试insertUser 接口

在这里插入图片描述

(4).测试updateUserById接口

在这里插入图片描述

(5).测试deleteById接口

在这里插入图片描述

### 回答1: 您可以使用Spring Boot的JPA或MyBatis等ORM框架来创建MySQL表。这些框架可以自动创建表结构,您只需要在实体类中定义好对应的字段即可。如果您需要手动创建表,可以使用MySQL的命令行工具或者可视化工具如Navicat等来执行SQL语句创建表。 ### 回答2: 若从Gitee上拉取下来的Spring Boot项目没有数据库脚本,可以按照以下步骤手动创建MySQL表: 1. 在MySQL数据库中创建一个新的数据库,可以使用命令行工具(如MySQL命令行、Navicat等)或可视化工具(如MySQL Workbench)。 ``` CREATE DATABASE database_name; ``` 2. 在Spring Boot项目的`src/main/resources`目录下创建一个新的SQL脚本文件,例如`schema.sql`,用于定义创建表结构的SQL语句。 3. 编辑`schema.sql`文件,按照需要定义表结构、字段、约束等信息。例如,创建一个名为`user`的表: ``` CREATE TABLE user ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARCHAR(100) NOT NULL ); ``` 4. 保存并关闭`schema.sql`文件。 5. 确保在Spring Boot项目的`application.properties`或`application.yml`文件中正确配置数据库连接信息,包括用户名、密码、数据库名称、连接URL等。 6. 启动Spring Boot项目,它将自动运行数据库脚本,并创建相应的表。 如果项目中涉及到其他数据操作,例如添加初始数据、修改表结构等,可以根据需要在SQL脚本中进行相应的操作。 总结而言,对于Gitee上拉取下来的Spring Boot项目,如果没有提供数据库脚本,我们可以手动创建MySQL表,并在Spring Boot启动时使用SQL脚本定义表结构。 ### 回答3: 当我们使用Giee拉取下来的Spring Boot项目中没有数据库脚本时,我们可以通过以下步骤来创建MySQL表: 1. 打开项目,在项目的 src/main/resources 目录下找到 application.properties(或 application.yml)文件,确保文件中已经配置好了MySQL数据库的连接信息,包括数据库的URL、用户名和密码。 2. 打开MySQL客户端,使用连接信息登陆到MySQL数据库。 3. 在MySQL客户端中创建一个对应的数据库,可以使用如下命令: ``` CREATE DATABASE database_name; ``` 4. 运行Spring Boot项目,确保项目能够正常启动。 5. 打开浏览器,在地址栏中输入 `http://localhost:<port>/actuator`,其中 `<port>` 是项目运行的端口号。这将会打开Actuator端点的页面。 6. 在Actuator页面中找到 `flyway` 或 `liquibase` 的端点,这些是数据库迁移工具,可以用于创建数据库表结构。 7. 点击进入 `flyway` 或 `liquibase` 的端点,查看当前数据库的状态。 8. 如果数据库没有任何迁移记录,那么可以创建一个新的迁移脚本。在项目的 `src/main/resources/db/migration` 目录下创建一个新的SQL文件,命名方式为 `V{版本号}__{描述}.sql`,其中 `{版本号}` 可以是数字序列,如 `1`,`2`,`3`,依次递增,`{描述}` 是对这个迁移脚本的描述,比如 `create_table_users`。 9. 在新创建的迁移脚本中,编写SQL语句来创建表结构,可以使用 `CREATE TABLE` 语句。 10. 保存并关闭迁移脚本。 11. 重新启动Spring Boot项目数据库迁移工具将会自动检测到新的脚本并执行,从而创建 MySQL 数据库中的表。 通过以上步骤,我们可以在没有数据库脚本的情况下,通过Spring Boot项目自带的数据库迁移工具来创建MySQL表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值