mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-08 01:28:24 +08:00
style: add MapperModel javadoc.
This commit is contained in:
parent
94ba44a1a4
commit
3a9dbf5d68
@ -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());
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user