Jeecg导入数据表在多数据源的情况下

您所在的位置:网站首页 怎么可以让自己静下心来 Jeecg导入数据表在多数据源的情况下

Jeecg导入数据表在多数据源的情况下

2024-04-07 18:30| 来源: 网络整理| 查看: 265

前言

由于项目前期开发没有使用到Jeecg,但随后的团队成员要求使用使用Jeecg的Online表单开发以提升开发效率后,需要将数据库中已存在的数据表导入到Jeecg的Online表单开发中。

但是紧随着就发现了一个问题,Online表单开发虽然有导入数据库的功能按钮,但是从主数据源master中读取,而跟业务相关的数据表都放在另外一个数据库。所以需要让Jeecg导入从数据源的表。

解决思路 根据Jeecg的官方文档中给出了目前的Jeecg中Online模式的代码生成器中的数据库配置会从名为jeecg-boot-module-system/org.jeecg.config.init.CodeGenerateDbConfig配置类中读取。 所以我们在Idea中使用全局搜索(Search Everwhere)这个功能查找这个类

image.png 可以发现其会去读取spring.datasource.dynamic.datasource.master.*下的url, 而我们在application.yaml配置的数据源有三个

image.png 我们希望他能够去读取zu数据源下的业务表,所以最简单、暴力的方式就是直接将CodeGeneratorDbConfig配置类中的读取的配置文件属性改为改为zu数据源的路径

image.png

这样,我们重新启动JeecgSystemApplication后,我们就可以在前端的Online表单开发中的导入数据库中看到我们希望导入的数据库啦。

随后的问题

这样子虽然能够导入数据库了,但是点击功能测试会发现,后端依然去了master数据源下查找zu数据源的表,这样当然是找不到的,我们应该希望让他能够去zu数据源下去寻找对应的表和数据,那么,我们要怎么实现这样的效果呢?

经过一系列的资料查阅和测试,我们只需要修改一下表的名称,改为{数据源前缀}.{原表名}之后,就可以成功的让Jeecg的表单开发去我们期望的数据源中查找数据了。例如zu_house改为zu.zu_house。(记得在Jeecg的在线开发-多数据源管理中配置对应的数据源喔)

tips:Jeecg在同步数据库的时候可能会造成数据丢失的问题,所以建议大家在同步之前做好数据备份。

想对Jeecg说的几句话

虽然在熟练了Jeecg后能够很大程度的提高了全栈工程师的开发效率,但是Jeecg在表单开发中的数据表新增上有一个对于性能强迫症的人来说很别扭的地方。比如varchar类型或者是int类型的Id,无法使用BIGINT来存放MyBatis对应的雪花算法增长型ID。 对于分布式开发的MySQL来说,最好的ID类型就是BIGINT + 雪花算法了。但是却无法使用这样的组合,而是varchar类型的ID列



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3