package com.bohuikeji.frame.module.admin.base;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * service接口父类
 * @param <T>
 * @author 10552
 */
public interface ServiceBase<T> extends IService<T> {

    /**
     * 使用ID查询一列数
     * @param id id
     * @param clm 数据库列名
     * @param type 转换类型，【注意：】仅支持基础数据类型及其包装类，不支持集合、实体、枚举等符合对象类型
     * @param <E> 类型
     * @return
     */
     <E> E selectColumnById(Integer id, String clm,Class<E> type);

    /**
     * 使用列查询一条数据
     * @param clm 数据库列名
     * @param val
     * @return
     */
     T selectOneByColumn(String clm,Object val);

    /**
     * 查询列表按一列
     * @param clm
     * @param val
     * @return
     */
     List<T> listByColumn(String clm,Object val);

    /**
     * 更新一列
     * @param id id
     * @param clm 列名
     * @param val 值
     * @return
     */
     boolean updateColumnById(Integer id,String clm,Object val);

    /**
     * 覆盖父类
     * @param queryWrapper
     * @return
     */
    @Override
    default T getOne(Wrapper<T> queryWrapper) {
        return getOne(queryWrapper, false);
    }






}
