• 手搭手Mybatis-Plus数据迁移至TDSQL


    环境介绍

    技术栈

    springboot+mybatis-plus+druid+baomidou+mysql+oracle

    软件

    版本

    mysql

    8

    IDEA

    IntelliJ IDEA 2022.2.1

    JDK

    1.8

    Spring Boot

    2.7.13

    mybatis

    2.3.1

    Navicat测试连接TDSQL

    开启访问外网

    IDEA环境搭建

    pom.xml所需依赖

    1. <dependencies>
    2. <dependency>
    3. <groupId>org.springframework.boot</groupId>
    4. <artifactId>spring-boot-starter-web</artifactId>
    5. </dependency>
    6. <dependency>
    7. <groupId>com.baomidou</groupId>
    8. <artifactId>mybatis-plus-boot-starter</artifactId>
    9. <version>3.5.3.2</version>
    10. </dependency>
    11. <dependency>
    12. <groupId>com.baomidou</groupId>
    13. <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    14. <version>3.5.0</version>
    15. </dependency>
    16. <dependency>
    17. <groupId>com.alibaba</groupId>
    18. <artifactId>druid-spring-boot-starter</artifactId>
    19. <version>1.1.14</version>
    20. </dependency>
    21. <dependency>
    22. <groupId>com.mysql</groupId>
    23. <artifactId>mysql-connector-j</artifactId>
    24. <scope>runtime</scope>
    25. </dependency>
    26. <dependency>
    27. <groupId>com.alibaba</groupId>
    28. <artifactId>druid</artifactId>
    29. <version>1.2.15</version>
    30. </dependency>
    31. <dependency>
    32. <groupId>org.projectlombok</groupId>
    33. <artifactId>lombok</artifactId>
    34. <optional>true</optional>
    35. </dependency>
    36. <dependency>
    37. <groupId>org.springframework.boot</groupId>
    38. <artifactId>spring-boot-starter-test</artifactId>
    39. <scope>test</scope>
    40. </dependency>
    41. <dependency>
    42. <groupId>com.dameng</groupId>
    43. <artifactId>Dm8JdbcDriver18</artifactId>
    44. <version>8.1.1.49</version>
    45. </dependency>
    46. <dependency>
    47. <groupId>com.oracle.database.jdbc</groupId>
    48. <artifactId>ojdbc8</artifactId>
    49. <scope>runtime</scope>
    50. </dependency>
    51. </dependencies>
    52. <build>
    53. <plugins>
    54. <plugin>
    55. <groupId>org.springframework.boot</groupId>
    56. <artifactId>spring-boot-maven-plugin</artifactId>
    57. <configuration>
    58. <excludes>
    59. <exclude>
    60. <groupId>org.projectlombok</groupId>
    61. <artifactId>lombok</artifactId>
    62. </exclude>
    63. </excludes>
    64. </configuration>
    65. </plugin>
    66. </plugins>
    67. </build>

    application.yml

    1. spring:
    2. datasource:
    3. dynamic:
    4. primary: #设置默认的数据源或者数据源组,默认值即为master
    5. strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
    6. datasource:
    7. mysql1:
    8. username: root
    9. password: PWD
    10. url: jdbc:mysql://IP:3306/mysql?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8
    11. driver-class-name: com.mysql.cj.jdbc.Driver
    12. # driver-class-name: com.mysql.jdbc.Driver
    13. mysql2:
    14. url: jdbc:mysql://IP:3306/sys?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8
    15. username: root
    16. password: PWD
    17. driver-class-name: com.mysql.cj.jdbc.Driver
    18. oracle:
    19. username: system
    20. password: PWD
    21. url: jdbc:oracle:thin:@IP:1521:orcl
    22. driver-class-name: oracle.jdbc.driver.OracleDriver
    23. # driver-class-name: com.mysql.jdbc.Driver
    24. dm:
    25. url: jdbc:dm://127.0.0.1:5236/demo?
    26. username: SYSDBA
    27. password: SYSDBA
    28. driver-class-name: dm.jdbc.driver.DmDriver
    29. # driver-class-name: com.mysql.jdbc.Driver
    30. DSQL:
    31. url: jdbc:mysql://gz-cynosdbmyxxxxxxxxxxxxxxxxxxxxxxx.com:29569/ToDemo
    32. username: root
    33. password: pwd
    34. driver-class-name: com.mysql.cj.jdbc.Driver
    35. server:
    36. port: 8089
    37. mybatis-plus:
    38. configuration:
    39. #输出日志
    40. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    41. #配置映射规则
    42. map-underscore-to-camel-case: true #表示支持下划线到驼蜂的映射
    43. #隐藏mybatis图标
    44. global-config:
    45. banner: false
    46. db-config:
    47. logic-delete-field: status
    48. logic-not-delete-value: 1
    49. logic-delete-value: 0

    spy.properties

    1. #3.2.1以上使用
    2. modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
    3. #3.2.1以下使用或者不配置
    4. #modulelist=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
    5. # 自定义日志打印
    6. logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
    7. #日志输出到控制台
    8. appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
    9. # 使用日志系统记录 sql
    10. #appender=com.p6spy.engine.spy.appender.Slf4JLogger
    11. # 设置 p6spy driver 代理
    12. deregisterdrivers=true
    13. # 取消JDBC URL前缀
    14. useprefix=true
    15. # 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
    16. excludecategories=info,debug,result,commit,resultset
    17. # 日期格式
    18. dateformat=yyyy-MM-dd HH:mm:ss
    19. # 实际驱动可多个
    20. #driverlist=org.h2.Driver
    21. # 是否开启慢SQL记录
    22. outagedetection=true
    23. # 慢SQL记录标准 2
    24. outagedetectioninterval=2

    MybatisX逆向工程只是一个便携的工具,自定义接口和实现类还是要自己写

    IDEA连接TDSQL

    MybatisX逆向工程

    逆向工程:通过数据库表接口,逆向生成java工程结构

    实体类、mapper接口、mapper映射文件、Service接口、service实现类

    mapper(dao层)

    1. @Mapper
    2. public interface UserMapper extends BaseMapper<User> {
    3. }
    1. @Mapper
    2. public interface TUserMapper extends BaseMapper<TUser> {
    3. }
    1. @Mapper
    2. public interface TestMapper extends BaseMapper<Test> {
    3. List<Test> selectTestAll();
    4. }
    1. @Mapper
    2. public interface DmuserMapper extends BaseMapper<Dmuser> {
    3. List selectDmUserAll();
    4. Integer addDmUser(Dmuser dmuser);
    5. }
    1. @Mapper
    2. public interface TUserMapper extends BaseMapper<TUser> {
    3. }

    service接口层

    1. public interface UserService extends IService<User> {
    2. }
    1. public interface TUserService extends IService<TUser> {
    2. }
    1. public interface TUserService extends IService<TUser> {
    2. }
    1. public interface TestService extends IService<Test> {
    2. List<Test> selectTestAll();
    3. }
    1. public interface DmuserService extends IService<Dmuser> {
    2. List selectDmUserAll();
    3. Integer addDmUser(Dmuser dmuser);
    4. }

    serviceimpl类

    1. @Service
    2. @DS("mysql2")
    3. public class UserServiceImpl extends ServiceImpl, User>
    4. implements UserService{
    5. }
    1. @Service
    2. @DS("mysql1")
    3. public class TUserServiceImpl extends ServiceImpl, TUser>
    4. implements TUserService{
    5. }
    1. @Service
    2. @DS("oracle")
    3. public class TestServiceImpl extends ServiceImpl, Test>
    4. implements TestService{
    5. @Autowired
    6. private TestMapper testMapper;
    7. @Override
    8. public List<Test> selectTestAll() {
    9. return testMapper.selectTestAll();
    10. }
    11. }
    1. @Service
    2. @DS("dm")
    3. public class DmuserServiceImpl extends ServiceImpl, Dmuser>
    4. implements DmuserService{
    5. @Autowired
    6. private DmuserMapper dmuserMapper;
    7. @Override
    8. public List<Dmuser> selectDmUserAll() {
    9. return dmuserMapper.selectDmUserAll();
    10. }
    11. @Override
    12. public Integer addDmUser(Dmuser dmuser) {
    13. return dmuserMapper.addDmUser(dmuser);
    14. }
    15. }
    1. @Service
    2. @DS("TDSQL")
    3. public class TdUserServiceImpl extends ServiceImpl, TdUser>
    4. implements TdUserService{
    5. }

    测试类

    1. @Autowired
    2. private TUserService tUserService;
    3. @Autowired
    4. private UserService userService;
    5. @Autowired
    6. private TestService testService;
    7. @Autowired
    8. private DmuserService dmuserService;
    9. @Autowired
    10. private TdUserService tdUserService;
    11. @Test
    12. void TDSqlDemo(){
    13. tdUserService.list();
    14. }

    迁移测试

    Mysql迁移至TDSQL

    1. @Test
    2. void MysqlToTDsql(){
    3. List<TUser> mysqls =tUserService.list();
    4. for (TUser mysql : mysqls) {
    5. TdUser tdUser =new TdUser();
    6. tdUser.setId("");
    7. tdUser.setName(mysql.getName());
    8. tdUser.setGender(0);
    9. tdUser.setEmail(mysql.getEmail());
    10. tdUserService.save(tdUser);
    11. System.out.println(""+mysql);
    12. }
    13. }

    Oracle迁移至TDSQL

    1. @Test
    2. void OracleToTDsql(){
    3. List<com.example.domain.Test> oracles =testService.selectTestAll();
    4. for (com.example.domain.Test oracle : oracles) {
    5. TdUser tdUser =new TdUser();
    6. tdUser.setId(String.valueOf(oracle.getId()));
    7. tdUser.setName(oracle.getName());
    8. tdUser.setEmail(String.valueOf(oracle.getClass()));
    9. tdUserService.save(tdUser);
    10. System.out.println(""+oracle);
    11. }

    DM8(达梦)迁移至TDSQL

    TDSQL-C MySQL 版(TDSQL-C for MySQL)是腾讯云自研的新一代云原生关系型数据库。融合了传统数据库、云计算与新硬件技术的优势,为用户提供具备高弹性、高性能、海量存储、安全可靠的数据库服务。TDSQL-C MySQL 版100%兼容 MySQL 5.7、8.0。实现超百万级 QPS 的高吞吐,最高 PB 级智能存储,保障数据安全可靠。

    TDSQL-C MySQL 版采用存储和计算分离的架构,所有计算节点共享一份数据,提供秒级的配置升降级、秒级的故障恢复,单节点可支持百万级 QPS,自动维护数据和备份,最高以GB/秒的速度并行回档。

    TDSQL-C MySQL 版既融合了商业数据库稳定可靠、高性能、可扩展的特征,又具有开源云数据库简单开放、高效迭代的优势。TDSQL-C MySQL 版引擎完全兼容原生 MySQL,您可以在不修改应用程序任何代码和配置的情况下,将 MySQL 数据库迁移至 TDSQL-C MySQL 版引擎。

    Mybatis-Plus

    https://baomidou.com/

    为简化开发而生

    MyBatis-Plus(opens new window)(简称 MP)是一个 MyBatis (opens new window) 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
    ————————————————
     

  • 相关阅读:
    【新版系统架构】知识点背诵默写本
    docker入门
    house系1
    pandoc安装使用(markdown转换为docx)
    弘辽科技:无货源网店怎么提升销量?注意什么?
    【maptplotlib大全图】一段代码洞查matplotlib图片真谛
    套接字Socket编程实践(C语言版)
    计算机毕业设计Java超市购物系统(源码+系统+mysql数据库+lw文档)
    C++标准模板(STL)- 类型支持 (类型特性,is_void,is_null_pointer,is_integral)
    Prometheus完整安装
  • 原文地址:https://blog.csdn.net/weixin_47268883/article/details/133779948