feat: 添加回调方法。

This commit is contained in:
Suomm 2023-08-22 15:10:13 +08:00
parent 3e913f4bd3
commit a858e498d3
3 changed files with 104 additions and 34 deletions

View File

@ -71,27 +71,17 @@ public interface MapperModel<T> {
return save(true);
}
/**
* 保存数据并返回 entity 本身并设置是否忽略 {@code null}
* 保存数据自动忽略 {@code null} 结果使用 {@link Optional}
* 返回源对象回调保存成功返回 {@code Optional.of(this)}保存失败返回
* {@code Optional.empty()}
*
* @return entity 本身
* @return {@link Optional} 链式调用
*/
default T saveAndReturnSelf() {
return saveAndReturnSelf(true);
default Optional<T> saveCallback() {
return saveCallback(true);
}
/**
* 保存数据并返回保存成功的 id并设置是否忽略 {@code null}
*
* @return id
*/
default <R> R saveAndReturnId() {
return saveAndReturnId(true);
}
/**
* 保存数据并设置是否忽略 {@code null}
*
@ -103,26 +93,15 @@ public interface MapperModel<T> {
}
/**
* 保存数据并返回 entity 本身并设置是否忽略 {@code null}
* 保存数据并设置是否忽略 {@code null} 结果使用 {@link Optional}
* 返回源对象回调保存成功返回 {@code Optional.of(this)}保存失败返回
* {@code Optional.empty()}
*
* @param ignoreNulls 是否忽略 {@code null}
* @return entity 本身
* @return {@link Optional} 链式调用
*/
default T saveAndReturnSelf(boolean ignoreNulls) {
baseMapper().insert((T) this, ignoreNulls);
return (T) this;
}
/**
* 保存数据并返回保存成功的 id并设置是否忽略 {@code null}
*
* @param ignoreNulls 是否忽略 {@code null}
* @return id 内容
*/
default <R> R saveAndReturnId(boolean ignoreNulls) {
baseMapper().insert((T) this, ignoreNulls);
return (R) pkValue();
default Optional<T> saveCallback(boolean ignoreNulls) {
return save(ignoreNulls) ? Optional.of((T) this) : Optional.empty();
}
/**
@ -135,6 +114,18 @@ public interface MapperModel<T> {
return saveOrUpdate(true);
}
/**
* 保存或者更新数据如果实体类主键没有值 <b>保存</b> 数据如果实体类主键有值
* <b>更新</b> 数据全部自动忽略 {@code null} 结果使用 {@link Optional}
* 返回源对象回调保存或更新成功返回 {@code Optional.of(this)}保存或更新失败返回
* {@code Optional.empty()}
*
* @return {@link Optional} 链式调用
*/
default Optional<T> saveOrUpdateCallback() {
return saveOrUpdateCallback(true);
}
/**
* 保存或者更新数据如果实体类主键没有值 <b>保存</b> 数据如果实体类主键有值
* <b>更新</b> 数据并设置是否忽略 {@code null}
@ -146,6 +137,19 @@ public interface MapperModel<T> {
return SqlUtil.toBool(baseMapper().insertOrUpdate((T) this, ignoreNulls));
}
/**
* 保存或者更新数据如果实体类主键没有值 <b>保存</b> 数据如果实体类主键有值
* <b>更新</b> 数据并设置是否忽略 {@code null} 结果使用 {@link Optional}
* 返回源对象回调保存或更新成功返回 {@code Optional.of(this)}保存或更新失败返回
* {@code Optional.empty()}
*
* @param ignoreNulls 是否忽略 {@code null}
* @return {@link Optional} 链式调用
*/
default Optional<T> saveOrUpdateCallback(boolean ignoreNulls) {
return saveOrUpdate(ignoreNulls) ? Optional.of((T) this) : Optional.empty();
}
/**
* 根据实体类主键删除数据
*
@ -155,6 +159,16 @@ public interface MapperModel<T> {
return SqlUtil.toBool(baseMapper().deleteById((Serializable) pkValue()));
}
/**
* 根据实体类主键删除数据结果使用 {@link Optional} 返回源对象回调删除成功返回
* {@code Optional.of(this)}删除失败返回 {@code Optional.empty()}
*
* @return {@link Optional} 链式调用
*/
default Optional<T> removeByIdCallback() {
return removeById() ? Optional.of((T) this) : Optional.empty();
}
/**
* 根据实体类主键更新数据自动忽略 {@code null}
*
@ -164,6 +178,17 @@ public interface MapperModel<T> {
return updateById(true);
}
/**
* 根据实体类主键更新数据自动忽略 {@code null} 结果使用 {@link Optional}
* 返回源对象回调更新成功返回 {@code Optional.of(this)}更新失败返回
* {@code Optional.empty()}
*
* @return {@link Optional} 链式调用
*/
default Optional<T> updateByIdCallback() {
return updateByIdCallback(true);
}
/**
* 根据实体类主键更新数据并设置是否忽略 {@code null}
*
@ -174,6 +199,18 @@ public interface MapperModel<T> {
return SqlUtil.toBool(baseMapper().update((T) this, ignoreNulls));
}
/**
* 根据实体类主键更新数据并设置是否忽略 {@code null} 结果使用 {@link Optional}
* 返回源对象回调更新成功返回 {@code Optional.of(this)}更新失败返回
* {@code Optional.empty()}
*
* @param ignoreNulls 是否忽略 {@code null}
* @return {@link Optional} 链式调用
*/
default Optional<T> updateByIdCallback(boolean ignoreNulls) {
return updateById(ignoreNulls) ? Optional.of((T) this) : Optional.empty();
}
/**
* 根据实体类主键获取一条数据
*

View File

@ -25,6 +25,7 @@ import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.util.SqlUtil;
import java.io.Serializable;
import java.util.Optional;
/**
* Active Record 模型
@ -47,6 +48,16 @@ public abstract class Model<T extends Model<T>>
return SqlUtil.toBool(baseMapper().deleteByQuery(queryWrapper()));
}
/**
* 根据实体类构建的条件删除数据结果使用 {@link Optional} 返回源对象回调删除成功返回
* {@code Optional.of(this)}删除失败返回 {@code Optional.empty()}
*
* @return {@link Optional} 链式调用
*/
public Optional<T> removeCallback() {
return remove() ? Optional.of((T) this) : Optional.empty();
}
/**
* 根据实体类构建的条件更新数据自动忽略 {@code null}
*
@ -56,6 +67,17 @@ public abstract class Model<T extends Model<T>>
return update(true);
}
/**
* 根据实体类构建的条件更新数据自动忽略 {@code null} 结果使用 {@link Optional}
* 返回源对象回调更新成功返回 {@code Optional.of(this)}更新失败返回
* {@code Optional.empty()}
*
* @return {@link Optional} 链式调用
*/
public Optional<T> updateCallback() {
return updateCallback(true);
}
/**
* 根据实体类构建的条件更新数据并设置是否忽略 {@code null}
*
@ -66,6 +88,18 @@ public abstract class Model<T extends Model<T>>
return SqlUtil.toBool(baseMapper().updateByQuery((T) this, ignoreNulls, queryWrapper()));
}
/**
* 根据实体类构建的条件更新数据并设置是否忽略 {@code null} 结果使用 {@link Optional}
* 返回源对象回调更新成功返回 {@code Optional.of(this)}更新失败返回
* {@code Optional.empty()}
*
* @param ignoreNulls 是否忽略 {@code null}
* @return {@link Optional} 链式调用
*/
public Optional<T> updateCallback(boolean ignoreNulls) {
return update(ignoreNulls) ? Optional.of((T) this) : Optional.empty();
}
@Override
public BaseMapper<T> baseMapper() {
return MapperModel.super.baseMapper();

View File

@ -51,7 +51,6 @@ public class FieldsQuery<T extends Model<T>> extends FieldsBuilder<T> {
return this;
}
protected Object pkValue() {
// 懒加载实际用到的时候才会生成 主键值
return ((Model<T>) delegate).pkValue();