package org.ccpit.base.dao;

import org.ccpit.base.controller.Page;
import org.ccpit.base.controller.PageRequest;

import java.util.List;

/**
 * Created by Administrator on 2015/8/18.
 */
public interface IDao<T> {
    /**
     * 实例化一个实体
     *
     * @param t
     */
    public boolean save(T t);

    /**
     * 实例化所有实体
     *
     * @param t
     */
    public boolean saveAll(List<T> list);

    /**
     * 删除一个实体
     *
     * @param t
     */
    public boolean delete(T t);

    /**
     * 删除一个实体
     *
     * @param id
     */
    public boolean deleteById(long id);

    /**
     * 删除所有实体
     *
     * @param t
     */
    public boolean deleteAll(List<T> list);

    /**
     * 查询实体
     *
     * @param t
     */
    public List<T> query(final String hql, final Object... params);

    /**
     * 查询所有
     *
     * @param t
     */
    public List<T> queryAll();

    /**
     * 分页查询
     *
     * @param pageRequest
     * @param hql
     * @param values
     * @return
     */
    public Page findPage(PageRequest pageRequest, String hql, Object[] values);

    /**
     * 获取实体的Class
     *
     * @param t
     */
    public Class getEntityClass();
}
