Commit af5520db46ef6b8000d66708ac17088389a5b17d

Authored by YunaiV
1 parent 63e31606

【缺陷修复】全局:完善对 SQLServer 2015 的兼容性

yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java
... ... @@ -6,8 +6,8 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 6 import cn.iocoder.yudao.framework.common.pojo.SortablePageParam;
7 7 import cn.iocoder.yudao.framework.common.pojo.SortingField;
8 8 import cn.iocoder.yudao.framework.mybatis.core.enums.SqlConstants;
  9 +import cn.iocoder.yudao.framework.mybatis.core.util.JdbcUtils;
9 10 import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils;
10   -import com.baomidou.mybatisplus.annotation.DbType;
11 11 import com.baomidou.mybatisplus.core.conditions.Wrapper;
12 12 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
13 13 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
... ... @@ -22,7 +22,6 @@ import org.apache.ibatis.annotations.Param;
22 22  
23 23 import java.util.Collection;
24 24 import java.util.List;
25   -import java.util.Objects;
26 25  
27 26 /**
28 27 * 在 MyBatis Plus 的 BaseMapper 的基础上拓展,提供更多的能力
... ... @@ -151,7 +150,7 @@ public interface BaseMapperX<T> extends MPJBaseMapper<T> {
151 150 */
152 151 default Boolean insertBatch(Collection<T> entities) {
153 152 // 特殊:SQL Server 批量插入后,获取 id 会报错,因此通过循环处理
154   - if (Objects.equals(SqlConstants.DB_TYPE, DbType.SQL_SERVER)) {
  153 + if (JdbcUtils.isSQLServer(SqlConstants.DB_TYPE)) {
155 154 entities.forEach(this::insert);
156 155 return CollUtil.isNotEmpty(entities);
157 156 }
... ... @@ -166,7 +165,7 @@ public interface BaseMapperX&lt;T&gt; extends MPJBaseMapper&lt;T&gt; {
166 165 */
167 166 default Boolean insertBatch(Collection<T> entities, int size) {
168 167 // 特殊:SQL Server 批量插入后,获取 id 会报错,因此通过循环处理
169   - if (Objects.equals(SqlConstants.DB_TYPE, DbType.SQL_SERVER)) {
  168 + if (JdbcUtils.isSQLServer(SqlConstants.DB_TYPE)) {
170 169 entities.forEach(this::insert);
171 170 return CollUtil.isNotEmpty(entities);
172 171 }
... ...
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/util/JdbcUtils.java
1 1 package cn.iocoder.yudao.framework.mybatis.core.util;
2 2  
  3 +import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
3 4 import cn.iocoder.yudao.framework.common.util.spring.SpringUtils;
4 5 import cn.iocoder.yudao.framework.mybatis.core.enums.DbTypeEnum;
5 6 import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
... ... @@ -58,4 +59,25 @@ public class JdbcUtils {
58 59 }
59 60 }
60 61  
  62 + /**
  63 + * 判断 JDBC 连接是否为 SQLServer 数据库
  64 + *
  65 + * @param url JDBC 连接
  66 + * @return 是否为 SQLServer 数据库
  67 + */
  68 + public static boolean isSQLServer(String url) {
  69 + DbType dbType = getDbType(url);
  70 + return isSQLServer(dbType);
  71 + }
  72 +
  73 + /**
  74 + * 判断 JDBC 连接是否为 SQLServer 数据库
  75 + *
  76 + * @param url JDBC 连接
  77 + * @return 是否为 SQLServer 数据库
  78 + */
  79 + public static boolean isSQLServer(DbType dbType) {
  80 + return ObjectUtils.equalsAny(dbType, DbType.SQL_SERVER, DbType.SQL_SERVER2005);
  81 + }
  82 +
61 83 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/db/DatabaseTableServiceImpl.java
... ... @@ -5,7 +5,6 @@ import cn.hutool.core.lang.Assert;
5 5 import cn.hutool.core.util.StrUtil;
6 6 import cn.iocoder.yudao.framework.mybatis.core.util.JdbcUtils;
7 7 import cn.iocoder.yudao.module.infra.dal.dataobject.db.DataSourceConfigDO;
8   -import com.baomidou.mybatisplus.annotation.DbType;
9 8 import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
10 9 import com.baomidou.mybatisplus.generator.config.GlobalConfig;
11 10 import com.baomidou.mybatisplus.generator.config.StrategyConfig;
... ... @@ -18,7 +17,6 @@ import org.springframework.stereotype.Service;
18 17  
19 18 import java.util.Comparator;
20 19 import java.util.List;
21   -import java.util.Objects;
22 20 import java.util.stream.Collectors;
23 21  
24 22 /**
... ... @@ -49,12 +47,11 @@ public class DatabaseTableServiceImpl implements DatabaseTableService {
49 47 // 获得数据源配置
50 48 DataSourceConfigDO config = dataSourceConfigService.getDataSourceConfig(dataSourceConfigId);
51 49 Assert.notNull(config, "数据源({}) 不存在!", dataSourceConfigId);
52   - DbType dbType = JdbcUtils.getDbType(config.getUrl());
53 50  
54 51 // 使用 MyBatis Plus Generator 解析表结构
55 52 DataSourceConfig.Builder dataSourceConfigBuilder = new DataSourceConfig.Builder(config.getUrl(), config.getUsername(),
56 53 config.getPassword());
57   - if (Objects.equals(dbType, DbType.SQL_SERVER)) { // 特殊:SQLServer jdbc 非标准,参见 https://github.com/baomidou/mybatis-plus/issues/5419
  54 + if (JdbcUtils.isSQLServer(config.getUrl())) { // 特殊:SQLServer jdbc 非标准,参见 https://github.com/baomidou/mybatis-plus/issues/5419
58 55 dataSourceConfigBuilder.databaseQueryClass(SQLQuery.class);
59 56 }
60 57 StrategyConfig.Builder strategyConfig = new StrategyConfig.Builder().enableSkipView(); // 忽略视图,业务上一般用不到
... ...