package com.jeff.tianti.common.service;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import com.jeff.tianti.common.dao.CommonDao;
/**
* 基础Service的定义
* @author Jeff Xu
* @since 2015-12-09
* @param <E>
* @param <ID>
*/
public abstract class CommonService<E,ID extends Serializable> {
protected CommonDao<E,ID> commonDao;
public void setCommonDao(CommonDao<E, ID> commonDao) {
this.commonDao = commonDao;
}
public CommonDao<E, ID> getCommonDao() {
return commonDao;
}
/**
* 根据ID获取某个Entity
* @param id
* @return
*/
public E get(ID id) {
return commonDao.getOne(id);
}
/**
* 根据ID查找某个Entity(建议使用)
* @param id
* @return
*/
public E find(ID id) {
return commonDao.findOne(id);
}
/**
* 获取所有的Entity列表
* @return
*/
public List<E> getAll() {
return commonDao.findAll();
}
/**
* 获取Entity的总数
* @return
*/
public Long getTotalCount() {
return commonDao.count();
}
/**
* 保存Entity
* @param entity
* @return
*/
public E save(E entity) {
return commonDao.save(entity);
}
/**
* 修改Entity
* @param entity
* @return
*/
public E update(E entity) {
return commonDao.save(entity);
}
/**
* 删除Entity
* @param entity
*/
public void delete(E entity) {
commonDao.delete(entity);
}
/**
* 根据Id删除某个Entity
* @param id
*/
public void delete(ID id) {
commonDao.delete(id);
}
/**
* 删除Entity的集合类
* @param entities
*/
public void delete(Collection<E> entities) {
commonDao.delete(entities);
}
/**
* 清空缓存,提交持久化
*/
public void flush() {
commonDao.flush();
}
/**
* 根据查询信息获取某个Entity的列表
* @param spec
* @return
*/
public List<E> findAll(Specification<E> spec) {
return commonDao.findAll(spec);
}
/**
* 获取Entity的分页信息
* @param pageable
* @return
*/
public Page<E> findAll(Pageable pageable){
return commonDao.findAll(pageable);
}
/**
* 根据查询条件和分页信息获取某个结果的分页信息
* @param spec
* @param pageable
* @return
*/
public Page<E> findAll(Specification<E> spec, Pageable pageable) {
return commonDao.findAll(spec, pageable);
}
/**
* 根据查询条件和排序条件获取某个结果集列表
* @param spec
* @param sort
* @return
*/
public List<E> findAll(Specification<E> spec, Sort sort) {
return commonDao.findAll(spec);
}
/**
* 查询某个条件的结果数集
* @param spec
* @return
*/
public long count(Specification<E> spec) {
return commonDao.count(spec);
}
}