diff --git a/blade-starter-mybatis/src/main/java/org/springblade/core/mp/base/BaseService.java b/blade-starter-mybatis/src/main/java/org/springblade/core/mp/base/BaseService.java index 1f8800e..844da8a 100644 --- a/blade-starter-mybatis/src/main/java/org/springblade/core/mp/base/BaseService.java +++ b/blade-starter-mybatis/src/main/java/org/springblade/core/mp/base/BaseService.java @@ -15,11 +15,13 @@ */ package org.springblade.core.mp.base; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.extension.service.IService; - import jakarta.validation.constraints.NotEmpty; + import java.util.List; +import java.util.Map; /** * 基础业务接口 @@ -29,6 +31,30 @@ import java.util.List; */ public interface BaseService extends IService { + /** + * 根据条件查询单条记录 + * + * @param queryWrapper 查询条件 + * @return 查询结果实体,无结果时返回null + */ + T queryOne(QueryWrapper queryWrapper); + + /** + * 根据实体对象查询详情 + * + * @param entity 查询实体对象,包含查询条件 + * @return 查询结果实体,无结果时返回null + */ + T queryDetail(T entity); + + /** + * 根据Map条件查询详情 + * + * @param entity 查询条件Map,key为字段名,value为字段值 + * @return 查询结果实体,无结果时返回null + */ + T queryDetail(Map entity); + /** * 逻辑删除 * diff --git a/blade-starter-mybatis/src/main/java/org/springblade/core/mp/base/BaseServiceImpl.java b/blade-starter-mybatis/src/main/java/org/springblade/core/mp/base/BaseServiceImpl.java index 619838e..e93935b 100644 --- a/blade-starter-mybatis/src/main/java/org/springblade/core/mp/base/BaseServiceImpl.java +++ b/blade-starter-mybatis/src/main/java/org/springblade/core/mp/base/BaseServiceImpl.java @@ -16,11 +16,15 @@ package org.springblade.core.mp.base; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import jakarta.validation.constraints.NotEmpty; import lombok.SneakyThrows; +import org.springblade.core.mp.support.Condition; import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.utils.SecureUtil; import org.springblade.core.tool.constant.BladeConstant; @@ -28,10 +32,10 @@ import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springframework.validation.annotation.Validated; -import jakarta.validation.constraints.NotEmpty; import java.util.Collection; import java.util.Date; import java.util.List; +import java.util.Map; /** * 业务封装基础类 @@ -43,6 +47,25 @@ import java.util.List; @Validated public class BaseServiceImpl, T extends BaseEntity> extends ServiceImpl implements BaseService { + @Override + public T queryOne(QueryWrapper queryWrapper) { + Page page = Page.of(1, 1); + Page result = super.page(page, queryWrapper); + return result.getRecords().isEmpty() ? null : result.getRecords().get(0); + } + + @Override + public T queryDetail(T entity) { + QueryWrapper queryWrapper = Condition.getQueryWrapper(entity); + return queryWrapper.isEmptyOfWhere() ? null : super.getOne(queryWrapper); + } + + @Override + public T queryDetail(Map entity) { + QueryWrapper queryWrapper = Condition.getQueryWrapper(entity, getEntityClass()); + return queryWrapper.isEmptyOfWhere() ? null : super.getOne(queryWrapper); + } + @Override public boolean save(T entity) { this.resolveSave(entity);