From 9c856dbb22638b3b3280daa4f0b2379c39757106 Mon Sep 17 00:00:00 2001 From: dengjiaxing <1099126569@qq.com> Date: Mon, 21 Aug 2023 20:08:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BB=A3=E7=A0=81=E7=94=9F?= =?UTF-8?q?=E6=88=90=E9=A1=B5=E9=9D=A2=E6=8A=A5=E9=94=99=EF=BC=8C=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E8=87=B3RuoYi-Vue-Plus=E5=BD=93=E5=89=8D=E6=9C=80?= =?UTF-8?q?=E6=96=B0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/mybatis/helper/DataBaseHelper.java | 10 ++++++++ .../generator/controller/GenController.java | 16 +++++++++--- .../dromara/generator/domain/GenTable.java | 6 +++++ .../mapper/GenTableColumnMapper.java | 5 +++- .../generator/mapper/GenTableMapper.java | 3 +++ .../service/GenTableServiceImpl.java | 25 ++++++++++++------- .../generator/service/IGenTableService.java | 6 +++-- .../org/dromara/generator/util/GenUtils.java | 4 +-- .../mapper/generator/GenTableMapper.xml | 5 ++++ script/sql/mysql/mysql_ry_v0.9.0.sql | 1 + 10 files changed, 64 insertions(+), 17 deletions(-) diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataBaseHelper.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataBaseHelper.java index 4da96593..bb20f4b3 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataBaseHelper.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataBaseHelper.java @@ -12,6 +12,9 @@ import javax.sql.DataSource; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; /** * 数据库助手 @@ -69,4 +72,11 @@ public class DataBaseHelper { // find_in_set(100 , '0,100,101') return "find_in_set('%s' , %s) <> 0".formatted(var, var2); } + + /** + * 获取当前加载的数据库名 + */ + public static List getDataSourceNameList() { + return new ArrayList<>(DS.getDataSources().keySet()); + } } diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/controller/GenController.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/controller/GenController.java index 32133c1a..00432a4f 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/controller/GenController.java +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/controller/GenController.java @@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.convert.Convert; import cn.hutool.core.io.IoUtil; import org.dromara.common.core.domain.R; +import org.dromara.common.mybatis.helper.DataBaseHelper; import org.dromara.common.web.core.BaseController; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -94,11 +95,11 @@ public class GenController extends BaseController { @SaCheckPermission("tool:gen:import") @Log(title = "代码生成", businessType = BusinessType.IMPORT) @PostMapping("/importTable") - public R importTableSave(String tables) { + public R importTableSave(String tables, String dataName) { String[] tableNames = Convert.toStrArray(tables); // 查询表信息 - List tableList = genTableService.selectDbTableListByNames(tableNames); - genTableService.importGenTable(tableList); + List tableList = genTableService.selectDbTableListByNames(tableNames, dataName); + genTableService.importGenTable(tableList, dataName); return R.ok(); } @@ -204,4 +205,13 @@ public class GenController extends BaseController { response.setContentType("application/octet-stream; charset=UTF-8"); IoUtil.write(response.getOutputStream(), false, data); } + + /** + * 查询数据源名称列表 + */ + @SaCheckPermission("tool:gen:list") + @GetMapping(value = "/getDataNames") + public R getCurrentDataSourceNameList() { + return R.ok(DataBaseHelper.getDataSourceNameList()); + } } diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/domain/GenTable.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/domain/GenTable.java index 944fd2e9..f792cebc 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/domain/GenTable.java +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/domain/GenTable.java @@ -31,6 +31,12 @@ public class GenTable extends BaseEntity { @TableId(value = "table_id") private Long tableId; + /** + * 数据源名称 + */ + @NotBlank(message = "数据源名称不能为空") + private String dataName; + /** * 表名称 */ diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/mapper/GenTableColumnMapper.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/mapper/GenTableColumnMapper.java index 3b5cb60a..47c1ac41 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/mapper/GenTableColumnMapper.java +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/mapper/GenTableColumnMapper.java @@ -1,6 +1,8 @@ package org.dromara.generator.mapper; +import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import org.apache.ibatis.annotations.Param; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.generator.domain.GenTableColumn; @@ -19,6 +21,7 @@ public interface GenTableColumnMapper extends BaseMapperPlus selectDbTableColumnsByName(String tableName); + @DS("#dataName") + List selectDbTableColumnsByName(@Param("tableName") String tableName, String dataName); } diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/mapper/GenTableMapper.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/mapper/GenTableMapper.java index 30e33e8e..c2ff7b69 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/mapper/GenTableMapper.java +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/mapper/GenTableMapper.java @@ -1,5 +1,6 @@ package org.dromara.generator.mapper; +import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; @@ -55,4 +56,6 @@ public interface GenTableMapper extends BaseMapperPlus { */ GenTable selectGenTableByName(String tableName); + @DS("") + List selectTableNameList(String dataName); } diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java index c505ec47..12ade84c 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.io.IoUtil; import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; @@ -49,7 +50,6 @@ import java.util.zip.ZipOutputStream; * * @author Lion Li */ -@DS("#header.datasource") @Slf4j @RequiredArgsConstructor @Service @@ -94,16 +94,19 @@ public class GenTableServiceImpl implements IGenTableService { private QueryWrapper buildGenTableQueryWrapper(GenTable genTable) { Map params = genTable.getParams(); QueryWrapper wrapper = Wrappers.query(); - wrapper.like(StringUtils.isNotBlank(genTable.getTableName()), "lower(table_name)", StringUtils.lowerCase(genTable.getTableName())) + wrapper + .eq(StringUtils.isNotEmpty(genTable.getDataName()), "data_name", genTable.getDataName()) + .like(StringUtils.isNotBlank(genTable.getTableName()), "lower(table_name)", StringUtils.lowerCase(genTable.getTableName())) .like(StringUtils.isNotBlank(genTable.getTableComment()), "lower(table_comment)", StringUtils.lowerCase(genTable.getTableComment())) .between(params.get("beginTime") != null && params.get("endTime") != null, "create_time", params.get("beginTime"), params.get("endTime")); return wrapper; } - + @DS("#genTable.dataName") @Override public TableDataInfo selectPageDbTableList(GenTable genTable, PageQuery pageQuery) { + genTable.getParams().put("genTableNames", baseMapper.selectTableNameList(genTable.getDataName())); Page page = baseMapper.selectPageDbTableList(pageQuery.build(), genTable); return TableDataInfo.build(page); } @@ -112,10 +115,12 @@ public class GenTableServiceImpl implements IGenTableService { * 查询据库列表 * * @param tableNames 表名称组 + * @param dataName 数据源名称 * @return 数据库表集合 */ + @DS("#dataName") @Override - public List selectDbTableListByNames(String[] tableNames) { + public List selectDbTableListByNames(String[] tableNames, String dataName) { return baseMapper.selectDbTableListByNames(tableNames); } @@ -166,19 +171,21 @@ public class GenTableServiceImpl implements IGenTableService { * 导入表结构 * * @param tableList 导入表列表 + * @param dataName 数据源名称 */ - @Transactional(rollbackFor = Exception.class) + @DSTransactional @Override - public void importGenTable(List tableList) { + public void importGenTable(List tableList, String dataName) { String operName = LoginHelper.getUsername(); try { for (GenTable table : tableList) { String tableName = table.getTableName(); GenUtils.initTable(table, operName); + table.setDataName(dataName); int row = baseMapper.insert(table); if (row > 0) { // 保存列信息 - List genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); + List genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName, dataName); List saveColumns = new ArrayList<>(); for (GenTableColumn column : genTableColumns) { GenUtils.initColumnField(column, table); @@ -282,14 +289,14 @@ public class GenTableServiceImpl implements IGenTableService { * * @param tableName 表名称 */ - @Transactional(rollbackFor = Exception.class) + @DSTransactional @Override public void synchDb(String tableName) { GenTable table = baseMapper.selectGenTableByName(tableName); List tableColumns = table.getColumns(); Map tableColumnMap = StreamUtils.toIdentityMap(tableColumns, GenTableColumn::getColumnName); - List dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); + List dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(table.getTableName(), table.getDataName()); if (CollUtil.isEmpty(dbTableColumns)) { throw new ServiceException("同步数据失败,原表结构不存在"); } diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/IGenTableService.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/IGenTableService.java index 643742b0..b93599a4 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/IGenTableService.java +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/IGenTableService.java @@ -43,9 +43,10 @@ public interface IGenTableService { * 查询据库列表 * * @param tableNames 表名称组 + * @param dataName 数据源名称 * @return 数据库表集合 */ - List selectDbTableListByNames(String[] tableNames); + List selectDbTableListByNames(String[] tableNames, String dataName); /** * 查询所有表信息 @@ -82,8 +83,9 @@ public interface IGenTableService { * 导入表结构 * * @param tableList 导入表列表 + * @param dataName 数据源名称 */ - void importGenTable(List tableList); + void importGenTable(List tableList, String dataName); /** * 预览代码 diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/util/GenUtils.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/util/GenUtils.java index 4bfffa75..d2e2d598 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/util/GenUtils.java +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/util/GenUtils.java @@ -209,7 +209,7 @@ public class GenUtils { * @return 截取后的列类型 */ public static String getDbType(String columnType) { - if (StringUtils.indexOf(columnType, '(') > 0) { + if (StringUtils.indexOf(columnType, "(") > 0) { return StringUtils.substringBefore(columnType, "("); } else { return columnType; @@ -223,7 +223,7 @@ public class GenUtils { * @return 截取后的列类型 */ public static Integer getColumnLength(String columnType) { - if (StringUtils.indexOf(columnType, '(') > 0) { + if (StringUtils.indexOf(columnType, "(") > 0) { String length = StringUtils.substringBetween(columnType, "(", ")"); return Integer.valueOf(length); } else { diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml b/ruoyi-modules/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml index 1ae784fe..7f9b3b65 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml +++ b/ruoyi-modules/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml @@ -217,4 +217,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by c.sort + diff --git a/script/sql/mysql/mysql_ry_v0.9.0.sql b/script/sql/mysql/mysql_ry_v0.9.0.sql index ddcaf3de..93997ff0 100644 --- a/script/sql/mysql/mysql_ry_v0.9.0.sql +++ b/script/sql/mysql/mysql_ry_v0.9.0.sql @@ -803,6 +803,7 @@ insert into sys_notice values('2', '000000', '维护通知:2018-07-01 系统 drop table if exists gen_table; create table gen_table ( table_id bigint(20) not null comment '编号', + data_name varchar(200) default '' comment '数据源名称', table_name varchar(200) default '' comment '表名称', table_comment varchar(500) default '' comment '表描述', sub_table_name varchar(64) default null comment '关联子表的表名', -- Gitee