Commit b0b806762980cfc407f13d5f1858112d3ffcd487
1 parent
b7554e93
【修复】代码生成:处理 SQLServer 数据库获取不到数据表结构注释
Showing
1 changed file
with
12 additions
and
4 deletions
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/db/DatabaseTableServiceImpl.java
| ... | ... | @@ -3,18 +3,22 @@ package cn.iocoder.yudao.module.infra.service.db; |
| 3 | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | 4 | import cn.hutool.core.lang.Assert; |
| 5 | 5 | import cn.hutool.core.util.StrUtil; |
| 6 | +import cn.iocoder.yudao.framework.mybatis.core.util.JdbcUtils; | |
| 6 | 7 | import cn.iocoder.yudao.module.infra.dal.dataobject.db.DataSourceConfigDO; |
| 8 | +import com.baomidou.mybatisplus.annotation.DbType; | |
| 7 | 9 | import com.baomidou.mybatisplus.generator.config.DataSourceConfig; |
| 8 | 10 | import com.baomidou.mybatisplus.generator.config.GlobalConfig; |
| 9 | 11 | import com.baomidou.mybatisplus.generator.config.StrategyConfig; |
| 10 | 12 | import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder; |
| 11 | 13 | import com.baomidou.mybatisplus.generator.config.po.TableInfo; |
| 12 | 14 | import com.baomidou.mybatisplus.generator.config.rules.DateType; |
| 15 | +import com.baomidou.mybatisplus.generator.query.SQLQuery; | |
| 16 | +import jakarta.annotation.Resource; | |
| 13 | 17 | import org.springframework.stereotype.Service; |
| 14 | 18 | |
| 15 | -import jakarta.annotation.Resource; | |
| 16 | 19 | import java.util.Comparator; |
| 17 | 20 | import java.util.List; |
| 21 | +import java.util.Objects; | |
| 18 | 22 | import java.util.stream.Collectors; |
| 19 | 23 | |
| 20 | 24 | /** |
| ... | ... | @@ -45,10 +49,14 @@ public class DatabaseTableServiceImpl implements DatabaseTableService { |
| 45 | 49 | // 获得数据源配置 |
| 46 | 50 | DataSourceConfigDO config = dataSourceConfigService.getDataSourceConfig(dataSourceConfigId); |
| 47 | 51 | Assert.notNull(config, "数据源({}) 不存在!", dataSourceConfigId); |
| 52 | + DbType dbType = JdbcUtils.getDbType(config.getUrl()); | |
| 48 | 53 | |
| 49 | 54 | // 使用 MyBatis Plus Generator 解析表结构 |
| 50 | - DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder(config.getUrl(), config.getUsername(), | |
| 51 | - config.getPassword()).build(); | |
| 55 | + DataSourceConfig.Builder dataSourceConfigBuilder = new DataSourceConfig.Builder(config.getUrl(), config.getUsername(), | |
| 56 | + config.getPassword()); | |
| 57 | + if (Objects.equals(dbType, DbType.SQL_SERVER)) { // 特殊:SQLServer jdbc 非标准,参见 https://github.com/baomidou/mybatis-plus/issues/5419 | |
| 58 | + dataSourceConfigBuilder.databaseQueryClass(SQLQuery.class); | |
| 59 | + } | |
| 52 | 60 | StrategyConfig.Builder strategyConfig = new StrategyConfig.Builder().enableSkipView(); // 忽略视图,业务上一般用不到 |
| 53 | 61 | if (StrUtil.isNotEmpty(name)) { |
| 54 | 62 | strategyConfig.addInclude(name); |
| ... | ... | @@ -61,7 +69,7 @@ public class DatabaseTableServiceImpl implements DatabaseTableService { |
| 61 | 69 | } |
| 62 | 70 | |
| 63 | 71 | GlobalConfig globalConfig = new GlobalConfig.Builder().dateType(DateType.TIME_PACK).build(); // 只使用 LocalDateTime 类型,不使用 LocalDate |
| 64 | - ConfigBuilder builder = new ConfigBuilder(null, dataSourceConfig, strategyConfig.build(), | |
| 72 | + ConfigBuilder builder = new ConfigBuilder(null, dataSourceConfigBuilder.build(), strategyConfig.build(), | |
| 65 | 73 | null, globalConfig, null); |
| 66 | 74 | // 按照名字排序 |
| 67 | 75 | List<TableInfo> tables = builder.getTableInfoList(); | ... | ... |