Commit ffac294fbd67c6a83e469260e47b676f09c8086f
1 parent
290a981c
【优化】全局:兼容 MyBatis Plus 针对 SQL Server 的 saveBatch 不兼容的兼容
Showing
1 changed file
with
13 additions
and
0 deletions
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 | 5 | 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 | +import cn.iocoder.yudao.framework.mybatis.core.enums.SqlConstants; | |
| 8 | 9 | import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; |
| 10 | +import com.baomidou.mybatisplus.annotation.DbType; | |
| 9 | 11 | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| 10 | 12 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| 11 | 13 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| ... | ... | @@ -20,6 +22,7 @@ import org.apache.ibatis.annotations.Param; |
| 20 | 22 | |
| 21 | 23 | import java.util.Collection; |
| 22 | 24 | import java.util.List; |
| 25 | +import java.util.Objects; | |
| 23 | 26 | |
| 24 | 27 | /** |
| 25 | 28 | * 在 MyBatis Plus 的 BaseMapper 的基础上拓展,提供更多的能力 |
| ... | ... | @@ -147,6 +150,11 @@ public interface BaseMapperX<T> extends MPJBaseMapper<T> { |
| 147 | 150 | * @param entities 实体们 |
| 148 | 151 | */ |
| 149 | 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 | 158 | return Db.saveBatch(entities); |
| 151 | 159 | } |
| 152 | 160 | |
| ... | ... | @@ -157,6 +165,11 @@ public interface BaseMapperX<T> extends MPJBaseMapper<T> { |
| 157 | 165 | * @param size 插入数量 Db.saveBatch 默认为 1000 |
| 158 | 166 | */ |
| 159 | 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 | 173 | return Db.saveBatch(entities, size); |
| 161 | 174 | } |
| 162 | 175 | ... | ... |