All Downloads are FREE. Search and download functionalities are using the official Maven repository.

top.jiaojinxin.jln.mp.bo.IBaseBO Maven / Gradle / Ivy

The newest version!
package top.jiaojinxin.jln.mp.bo;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.util.CollectionUtils;
import top.jiaojinxin.jln.model.query.PageQuery;
import top.jiaojinxin.jln.mp.model.BaseEntity;
import top.jiaojinxin.jln.model.query.ConditionItem;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.function.Function;

/**
 * 

单表业务操作接口基类

*

继承自{@link IService}

*

可扩展基础的单表业务操作

* * @param 实体类型 * @author JiaoJinxin */ public interface IBaseBO extends IService { /** * 校验是否存在(根据指定属性校验是否不存在) * * @param property 属性 * @param propertyValue 属性值 * @param 属性类型 * @return boolean * @author JiaoJinxin */ default boolean notExistsBy(SFunction property, R propertyValue) { return !existsBy(property, propertyValue); } /** * 校验是否存在(根据指定属性校验是否存在) * * @param property 属性 * @param propertyValue 属性值 * @param 属性类型 * @return boolean * @author JiaoJinxin */ default boolean existsBy(SFunction property, R propertyValue) { return existsBy(Map.of(property, propertyValue)); } /** * 校验是否存在(根据指定属性校验是否不存在) * * @param propertyMap 属性与属性值的Map集合 * @param 属性类型 * @return boolean * @author JiaoJinxin */ default boolean notExistsBy(Map, R> propertyMap) { return !existsBy(propertyMap); } /** * 校验是否存在(根据指定属性校验是否存在) * * @param propertyMap 属性与属性值的Map集合 * @param 属性类型 * @return boolean * @author JiaoJinxin */ boolean existsBy(Map, R> propertyMap); /** * 删除(根据指定属性获取符合条件的所有对象) * * @param property 属性 * @param propertyValue 属性值 * @param 属性类型 * @return boolean * @author JiaoJinxin */ default boolean removeBy(SFunction property, R propertyValue) { List ids = listBy(property, propertyValue).stream().map(BaseEntity::getId).toList(); if (CollectionUtils.isEmpty(ids)) { return false; } return removeByIds(ids); } /** * 单个查询(根据指定属性获取符合条件的任意一个对象) * * @param property 属性 * @param propertyValue 属性值 * @param 属性类型 * @return E * @author JiaoJinxin */ default E getBy(SFunction property, R propertyValue) { return getBy(property, propertyValue, Function.identity()); } /** * 单个查询(根据指定属性获取符合条件的任意一个对象) * * @param property 属性 * @param propertyValue 属性值 * @param convertor 结果转换器 * @param 属性类型 * @param 转换后的最终结果 * @return E * @author JiaoJinxin */ default F getBy(SFunction property, R propertyValue, Function convertor) { return listBy(property, propertyValue, convertor).stream().findAny().orElse(null); } /** * 列表查询(根据主键ID) * * @param ids 主键ID集合 * @param convertor 结果转换器 * @param 转换后的最终结果 * @return java.util.Collection * @author JiaoJinxin */ Collection listByIds(Collection ids, Function convertor); /** * 列表查询(根据指定属性获取符合条件的所有对象) * * @param property 属性 * @param propertyValue 属性值 * @param 属性类型 * @return java.util.Collection * @author JiaoJinxin */ default Collection listBy(SFunction property, R propertyValue) { return listBy(property, propertyValue, Function.identity()); } /** * 列表查询(根据指定属性获取符合条件的所有对象) * * @param property 属性 * @param propertyValue 属性值 * @param convertor 结果转换器 * @param 属性类型 * @param 转换后的最终结果 * @return E * @author JiaoJinxin */ Collection listBy(SFunction property, R propertyValue, Function convertor); /** * 分页查询 * * @param pageQuery 分页查询数据传输对象 * @param conditionItemConvert 转换器:将分页查询条件转换为Map(key为column,value为{@link ConditionItem}) * @param 分页查询条件数据传输对象 * @return com.baomidou.mybatisplus.core.metadata.IPage * @author JiaoJinxin */ IPage page(PageQuery pageQuery, Function, ConditionItem>> conditionItemConvert); /** * 分页查询 * * @param pageQuery 分页查询数据传输对象 * @param entityConvert 转换器:将分页查询结果{@link E}转换为{@link F} * @param conditionItemConvert 转换器:将分页查询条件转换为Map(key为column,value为{@link ConditionItem}) * @param 分页查询条件数据传输对象 * @param 分页查询实际返回结果 * @return com.baomidou.mybatisplus.core.metadata.IPage * @author JiaoJinxin */ default IPage page(PageQuery pageQuery, Function entityConvert, Function, ConditionItem>> conditionItemConvert) { return page(pageQuery, conditionItemConvert).convert(entityConvert); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy