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 实体类型 * @param

实体主键类型 * @author 夜雨 * @since 2025-05-14 17:06 */ public abstract class AbstractEntityService implements BaseService { /** 基本 Mapper */ protected BaseMapper baseMapper; /** * 获取 Mapper 实例 * * @return Mapper 实例 */ protected abstract BaseMapper mapper(); /** 检查 mapper */ private void checkMapper() { if (baseMapper == null) { baseMapper = mapper(); } TimiException.required(baseMapper, "mapper() can not be null"); } @Override public PageResult page(Page 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); } }