mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-06 16:48:24 +08:00
Merge pull request #384 from Wudadada/main
feat(mybatis-flex-core): 增加updateBatch方法是否忽略null字段的可配置性
This commit is contained in:
commit
cb6b0fb1d4
@ -20,15 +20,15 @@ public interface IAccountService extends IService<Account> {
|
||||
|
||||
```java
|
||||
@Component
|
||||
public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account>
|
||||
public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account>
|
||||
implements IAccountService {
|
||||
|
||||
|
||||
@Override
|
||||
public List<Account> customMethod() {
|
||||
// 返回 id >= 100 的数据
|
||||
return list(ACCOUNT.ID.ge(100));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
@ -64,7 +64,9 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account>
|
||||
- **update(entity, query)**:根据 `QueryWrapper` 构建的条件更新数据,实体类可以没有主键(如果有也会被忽略),实体类的 null 属性,会自动被忽略。
|
||||
- **update(entity, condition)**:根据 `QueryCondition` 构建的条件更新数据,实体类可以没有主键(如果有也会被忽略),实体类的 null 属性,会自动被忽略。
|
||||
- **updateBatch(entities)**:批量保存多条数据,要求主键值不能为空,否则会抛出异常;同时,数据为 null 的字段不会更新到数据库。
|
||||
- **updateBatch(entities, size)**:批量保存多条数据,按指定数量切分,要求主键值不能为空,否则会抛出异常;同时,数据为 null 的字段不会更新到数据库。。
|
||||
- **updateBatch(entities, ignoreNulls)**:批量保存多条数据,要求主键值不能为空,否则会抛出异常;可以选择数据为 null 的字段是否更新到数据库。
|
||||
- **updateBatch(entities, size)**:批量保存多条数据,按指定数量切分,要求主键值不能为空,否则会抛出异常;同时,数据为 null 的字段不会更新到数据库。
|
||||
- **updateBatch(entities, size, ignoreNulls)**:批量保存多条数据,按指定数量切分,要求主键值不能为空,否则会抛出异常;可以选择数据为 null 的字段是否更新到数据库。
|
||||
|
||||
|
||||
## 查询数据
|
||||
@ -117,4 +119,4 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account>
|
||||
## 其他方法
|
||||
|
||||
- **getMapper()**:获取对应的 `BaseMapper` 接口。
|
||||
- **query()**:获取默认的 `QueryWrapper` 类。
|
||||
- **query()**:获取默认的 `QueryWrapper` 类。
|
||||
|
||||
@ -269,6 +269,20 @@ public interface IService<T> {
|
||||
return updateBatch(entities, DEFAULT_BATCH_SIZE);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>根据数据主键批量更新数据
|
||||
*
|
||||
* @param entities 实体类对象集合
|
||||
* @param ignoreNulls 是否忽略空字段
|
||||
* {@code true} 表示忽略实体类中为 {@code null} 的字段,不更新这些字段。
|
||||
* {@code false} 表示不忽略空字段,允许将对应字段更新为 {@code null}。
|
||||
* @return boolean {@code true} 更新成功,{@code false} 更新失败。
|
||||
* @apiNote 若 {@code ignoreNulls} 为 {@code true},实体类中为 {@code null} 的属性不会更新到数据库。
|
||||
*/
|
||||
default boolean updateBatch(Collection<T> entities, Boolean ignoreNulls) {
|
||||
return updateBatch(entities, DEFAULT_BATCH_SIZE, ignoreNulls);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>根据数据主键批量更新数据
|
||||
*
|
||||
@ -282,6 +296,22 @@ public interface IService<T> {
|
||||
return SqlUtil.toBool(Db.executeBatch(entities, batchSize, usefulClass, BaseMapper::update));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>根据数据主键批量更新数据
|
||||
*
|
||||
* @param entities 实体类对象集合
|
||||
* @param batchSize 每批次更新数量
|
||||
* @param ignoreNulls 是否忽略空字段
|
||||
* {@code true} 表示忽略实体类中为 {@code null} 的字段,不更新这些字段。
|
||||
* {@code false} 表示不忽略空字段,允许将对应字段更新为 {@code null}。
|
||||
* @return {@code true} 更新成功,{@code false} 更新失败。
|
||||
* @apiNote 若 {@code ignoreNulls} 为 {@code true},实体类中为 {@code null} 的属性不会更新到数据库。
|
||||
*/
|
||||
default boolean updateBatch(Collection<T> entities, int batchSize, boolean ignoreNulls) {
|
||||
Class<BaseMapper<T>> usefulClass = (Class<BaseMapper<T>>) ClassUtil.getUsefulClass(getMapper().getClass());
|
||||
return SqlUtil.toBool(Db.executeBatch(entities, batchSize, usefulClass, (mapper, entity) -> mapper.update(entity, ignoreNulls)));
|
||||
}
|
||||
|
||||
// ===== 查询(查)操作 =====
|
||||
|
||||
/**
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user