Commit ffac294fbd67c6a83e469260e47b676f09c8086f

Authored by YunaiV
1 parent 290a981c

【优化】全局:兼容 MyBatis Plus 针对 SQL Server 的 saveBatch 不兼容的兼容

yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java
@@ -5,7 +5,9 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam; @@ -5,7 +5,9 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
5 import cn.iocoder.yudao.framework.common.pojo.PageResult; 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 import cn.iocoder.yudao.framework.common.pojo.SortablePageParam; 6 import cn.iocoder.yudao.framework.common.pojo.SortablePageParam;
7 import cn.iocoder.yudao.framework.common.pojo.SortingField; 7 import cn.iocoder.yudao.framework.common.pojo.SortingField;
  8 +import cn.iocoder.yudao.framework.mybatis.core.enums.SqlConstants;
8 import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; 9 import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils;
  10 +import com.baomidou.mybatisplus.annotation.DbType;
9 import com.baomidou.mybatisplus.core.conditions.Wrapper; 11 import com.baomidou.mybatisplus.core.conditions.Wrapper;
10 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 12 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
11 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 13 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -20,6 +22,7 @@ import org.apache.ibatis.annotations.Param; @@ -20,6 +22,7 @@ import org.apache.ibatis.annotations.Param;
20 22
21 import java.util.Collection; 23 import java.util.Collection;
22 import java.util.List; 24 import java.util.List;
  25 +import java.util.Objects;
23 26
24 /** 27 /**
25 * 在 MyBatis Plus 的 BaseMapper 的基础上拓展,提供更多的能力 28 * 在 MyBatis Plus 的 BaseMapper 的基础上拓展,提供更多的能力
@@ -147,6 +150,11 @@ public interface BaseMapperX<T> extends MPJBaseMapper<T> { @@ -147,6 +150,11 @@ public interface BaseMapperX<T> extends MPJBaseMapper<T> {
147 * @param entities 实体们 150 * @param entities 实体们
148 */ 151 */
149 default Boolean insertBatch(Collection<T> entities) { 152 default Boolean insertBatch(Collection<T> entities) {
  153 + // 特殊:SQL Server 批量插入后,获取 id 会报错,因此通过循环处理
  154 + if (Objects.equals(SqlConstants.DB_TYPE, DbType.SQL_SERVER)) {
  155 + entities.forEach(this::insert);
  156 + return CollUtil.isNotEmpty(entities);
  157 + }
150 return Db.saveBatch(entities); 158 return Db.saveBatch(entities);
151 } 159 }
152 160
@@ -157,6 +165,11 @@ public interface BaseMapperX&lt;T&gt; extends MPJBaseMapper&lt;T&gt; { @@ -157,6 +165,11 @@ public interface BaseMapperX&lt;T&gt; extends MPJBaseMapper&lt;T&gt; {
157 * @param size 插入数量 Db.saveBatch 默认为 1000 165 * @param size 插入数量 Db.saveBatch 默认为 1000
158 */ 166 */
159 default Boolean insertBatch(Collection<T> entities, int size) { 167 default Boolean insertBatch(Collection<T> entities, int size) {
  168 + // 特殊:SQL Server 批量插入后,获取 id 会报错,因此通过循环处理
  169 + if (Objects.equals(SqlConstants.DB_TYPE, DbType.SQL_SERVER)) {
  170 + entities.forEach(this::insert);
  171 + return CollUtil.isNotEmpty(entities);
  172 + }
160 return Db.saveBatch(entities, size); 173 return Db.saveBatch(entities, size);
161 } 174 }
162 175