Skip to content

BaseService

lxy edited this page Jul 6, 2021 · 1 revision
import com.gitee.fastmybatis.core.mapper.CrudMapper;
import com.gitee.fastmybatis.core.query.Query;
import com.gitee.fastmybatis.core.support.PageEasyui;
import com.gitee.fastmybatis.core.util.MapperUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.Collections;
import java.util.List;
import java.util.function.Supplier;
import java.util.stream.Collectors;

/**
 * service基类
 * @author tanghc
 */
public abstract class BaseService<E, Mapper extends CrudMapper<E, Long>> {
    
    @Autowired
    private Mapper mapper;

    public Mapper getMapper() {
        return mapper;
    }

    public PageEasyui<E>  page(Query query) {
        return MapperUtil.queryForEasyuiDatagrid(mapper, query);
    }

    public <T> PageEasyui<T>  page(Query query, Class<T> clazz) {
        return MapperUtil.queryForEasyuiDatagrid(mapper, query, clazz);
    }

    public List<E> listAll() {
        return listAll(new Query());
    }

    public List<E> listAll(Query query) {
        return mapper.list(query.setQueryAll(true));
    }

    public <R> List<R> listAll(Supplier<R> supplier) {
        List<E> list = mapper.list(new Query().setQueryAll(true));
        if (list == null || list.isEmpty()) {
            return Collections.emptyList();
        }
        return list.stream()
                .map(source -> {
                    R target = supplier.get();
                    BeanUtils.copyProperties(source, target);
                    return target;
                })
                .collect(Collectors.toList());
    }

    public List<E> list(Query query) {
        return mapper.list(query);
    }

    public List<E> list(String column, Object value) {
        return mapper.listByColumn(column, value);
    }

    public E get(Query query) {
        return mapper.getByQuery(query);
    }

    public E get(String column, Object value) {
        return mapper.getByColumn(column, value);
    }

    /**
     * 根据主键查询
     *
     * @param id 主键
     * @return 返回记录,没有返回null
     */
    public E getById(Long id) {
        return mapper.getById(id);
    }

    /**
     * 新增,忽略null字段
     *
     * @param entity 新增的记录
     * @return 返回影响行数
     */
    public int save(E entity) {
        return mapper.saveIgnoreNull(entity);
    }

    /**
     * 批量添加
     * @param entityList 添加对象
     * @return 返回影响行数
     */
    public int saveBatch(List<E> entityList) {
        return mapper.saveBatch(entityList);
    }

    /**
     * 修改,忽略null字段
     *
     * @param entity 修改的记录
     * @return 返回影响行数
     */
    public int update(E entity) {
        return mapper.updateIgnoreNull(entity);
    }

    /**
     * 删除记录
     *
     * @param entity 待删除的记录
     * @return 返回影响行数
     */
    public int delete(E entity) {
        return mapper.delete(entity);
    }
}
Clone this wiki locally