style: add MapperModel javadoc.

This commit is contained in:
Suomm 2023-07-25 12:06:44 +08:00
parent 94ba44a1a4
commit 3a9dbf5d68

View File

@ -25,6 +25,11 @@ import com.mybatisflex.core.util.SqlUtil;
import java.util.Optional;
/**
* <p>使用 {@link BaseMapper} 进行 CRUD 操作的实体类的抽象接口
*
* <p>使用接口是为了方便拓展该接口提供了简单的根据 <b>主键</b> 操作数据的方法
* 实现类可以进行其他方法的扩展
*
* @param <T> 实体类类型
* @author 王帅
* @since 2023-07-23
@ -32,47 +37,117 @@ import java.util.Optional;
@SuppressWarnings({"unused", "unchecked"})
public interface MapperModel<T> {
/**
* <p>获取实体类对应的 {@link BaseMapper} 接口
*
* <p>可以拓展该方法提高效率例如
* <pre>{@code
* return AccountMapper.class;
* }</pre>
*
* @return {@link BaseMapper} 接口
*/
default BaseMapper<T> baseMapper() {
return Mappers.ofEntityClass((Class<T>) getClass());
}
/**
* <p>获取实体类主键数据
*
* <p>可以拓展该方法提高效率例如
* <pre>{@code
* return new Object[]{id};
* }</pre>
*
* @return 主键数据数组
*/
default Object[] getPkValues() {
TableInfo tableInfo = TableInfoFactory.ofEntityClass(getClass());
return tableInfo.buildPkSqlArgs(this);
}
/**
* 保存数据自动忽略 {@code null}
*
* @return {@code true} 保存成功{@code false} 保存失败
*/
default boolean save() {
return save(true);
}
/**
* 保存数据并设置是否忽略 {@code null}
*
* @param ignoreNulls 是否忽略 {@code null}
* @return {@code true} 保存成功{@code false} 保存失败
*/
default boolean save(boolean ignoreNulls) {
return SqlUtil.toBool(baseMapper().insert((T) this, ignoreNulls));
}
/**
* 保存或者更新数据如果实体类主键没有值 <b>保存</b> 数据如果实体类主键有值
* <b>更新</b> 数据全部自动忽略 {@code null}
*
* @return {@code true} 保存或更新成功{@code false} 保存或更新失败
*/
default boolean saveOrUpdate() {
return saveOrUpdate(true);
}
/**
* 保存或者更新数据如果实体类主键没有值 <b>保存</b> 数据如果实体类主键有值
* <b>更新</b> 数据并设置是否忽略 {@code null}
*
* @param ignoreNulls 是否忽略 {@code null}
* @return {@code true} 保存或更新成功{@code false} 保存或更新失败
*/
default boolean saveOrUpdate(boolean ignoreNulls) {
return SqlUtil.toBool(baseMapper().insertOrUpdate((T) this, ignoreNulls));
}
/**
* 根据实体类主键删除数据
*
* @return {@code true} 删除成功{@code false} 删除失败
*/
default boolean removeById() {
return SqlUtil.toBool(baseMapper().deleteById(getPkValues()));
}
/**
* 根据实体类主键更新数据自动忽略 {@code null}
*
* @return {@code true} 更新成功{@code false} 更新失败
*/
default boolean updateById() {
return updateById(true);
}
/**
* 根据实体类主键更新数据并设置是否忽略 {@code null}
*
* @param ignoreNulls 是否忽略 {@code null}
* @return {@code true} 更新成功{@code false} 更新失败
*/
default boolean updateById(boolean ignoreNulls) {
return SqlUtil.toBool(baseMapper().update((T) this, ignoreNulls));
}
/**
* 根据实体类主键获取一条数据
*
* @return 数据
*/
default T oneById() {
return baseMapper().selectOneById(getPkValues());
}
/**
* 根据实体类主键获取一条数据并封装为 {@link Optional} 返回
*
* @return 数据
*/
default Optional<T> oneByIdOpt() {
return Optional.ofNullable(oneById());
}