Files
timi-spring/src/main/java/com/imyeyu/spring/service/AbstractEntityService.java
2026-01-04 17:27:36 +08:00

81 lines
1.6 KiB
Java

package com.imyeyu.spring.service;
import com.imyeyu.java.bean.timi.TimiException;
import com.imyeyu.spring.bean.Page;
import com.imyeyu.spring.bean.PageResult;
import com.imyeyu.spring.entity.Deletable;
import com.imyeyu.spring.entity.Updatable;
import com.imyeyu.spring.mapper.BaseMapper;
/**
* 抽象实体服务类
*
* @param <T> 实体类型
* @param <P> 实体主键类型
* @author 夜雨
* @since 2025-05-14 17:06
*/
public abstract class AbstractEntityService<T, P> implements BaseService<T, P> {
/** 基本 Mapper */
protected BaseMapper<T, P> baseMapper;
/**
* 创建实体服务
*/
protected AbstractEntityService() {
}
/**
* 获取 Mapper 实例
*
* @return Mapper 实例
*/
protected abstract BaseMapper<T, P> mapper();
/** 检查 mapper */
private void checkMapper() {
if (baseMapper == null) {
baseMapper = mapper();
}
TimiException.required(baseMapper, "mapper() can not be null");
}
@Override
public PageResult<T> page(Page<T> page) {
checkMapper();
return baseMapper.selectPageResult(page);
}
public void create(T t) {
checkMapper();
if (t instanceof Updatable updatable) {
updatable.setUpdatedAt(null);
}
if (t instanceof Deletable deletable) {
deletable.setDeletedAt(null);
}
baseMapper.insert(t);
}
public T get(P id) {
checkMapper();
return baseMapper.select(id);
}
public void update(T t) {
checkMapper();
baseMapper.updateSelective(t);
}
public void delete(P p) {
checkMapper();
baseMapper.delete(p);
}
public void destroy(P p) {
checkMapper();
baseMapper.destroy(p);
}
}