/**
* Copyright (c) http://www.hao-se.cn Ltd.,2007 All rights reserved.
*/
package com.joe.utilities.core.hibernate.entrydao;
import java.util.List;
import org.hibernate.criterion.DetachedCriteria;
import com.joe.utilities.common.util.Page;
import com.joe.utilities.core.data.PageRequest;
import com.joe.utilities.core.data.PageResponse;
/**
* 泛型实体DAO接口。
*
* 定义了泛型的保存、删除、查询方法。
*
*
*/
public interface BaseEntityDAO<T> {
/**
* 保存实体
*
* @param o
*/
public void saveEntity(T o);
/**
* 删除实体
*
* @param article
*/
public void deleteEntity(T o);
/**
* 通过唯一id进行查询
*
* @param id
* @return 返回ID与参数id一致的实体信息
*/
public T getByID(String id);
/**
* 通过唯一id进行查询
*
* @param id
* @return 返回ID与参数id一致的实体信息
*/
public T getByID(Long id);
/**
* 根据DetachedCriteria查询
*
* @param dc(查询条件)
* @return
*/
public List findByDetachedCriteria(final DetachedCriteria dc);
/**
* 查找属性值相等的对象
*
* @param name(属性名)
* @param value(属性值)
* @return
*/
public List<T> findBy(String name, Object value);
/**
* 通过DetachedCriteria对象设置查询条件传入此方法进行分页数据查询,并返回分页显示需要的页面对象
*
* @param dc(已经包装好的查询条件,分离投影和排序)
* @param pageNo 页号,从1开始.
* @param pageSize 一页的数据量
* @return 返回符合分页属性的信息集合
*/
public Page pagedQuery(final DetachedCriteria dc, int pageNo, int pageSize);
List<T> findByProperty(String propertyName, Object value);
PageResponse<T> findByProperty1(String propertyName, Object value,PageRequest pageRequest);
PageResponse<T> findAll(PageRequest pageRequest);
List<T> findAll();
}