使用泛形定义DAO

package com.yeegol.core.dao;

import java.io.Serializable;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.Criterion;

import com.yeegol.core.utils.GenericsUtils;


/**
 * 负责为单个Entity对象提供CRUD操作的Hibernate DAO基类.
 * <p/>
 * 子类只要在类定义时指定所管理Entity的Class, 即拥有对单个Entity对象的CRUD操作.
 * <pre>
 * public class UserManager extends HibernateEntityDao<User> {
 * }
 * </pre>
 *
 * @author calvin
 * @see HibernateGenericDao
 */
@SuppressWarnings("unchecked")
public class HibernateEntityDao<T> extends HibernateGenericDao implements EntityDao<T> {

 protected Class<T> entityClass;// DAO�?��理的Entity类型.

 /**
  * 在构造函数中将泛型T.class赋给entityClass.
  */
 public HibernateEntityDao() {
  entityClass = GenericsUtils.getSuperClassGenricType(getClass());
 }

 /**
  * 取得entityClass.JDK1.4不支持泛型的子类可以抛开Class<T> entityClass,重载此函数达到相同效果�?
  */
 protected Class<T> getEntityClass() {
  return entityClass;
 }

 /**
  * 根据ID获取对象.
  *
  * @see HibernateGenericDao#getId(Class,Object)
  */
 public T get(Serializable id) {
  return get(getEntityClass(), id);
 }

 /**
  * 获取全部对象
  *
  * @see HibernateGenericDao#getAll(Class)
  */
 public List<T> getAll() {
  return getAll(getEntityClass());
 }

 /**
  * 获取全部对象,带排序参�?
  *
  * @see HibernateGenericDao#getAll(Class,String,boolean)
  */
 public List<T> getAll(String orderBy, boolean isAsc) {
  return getAll(getEntityClass(), orderBy, isAsc);
 }

 /**
  * 根据ID移除对象.
  *
  * @see HibernateGenericDao#removeById(Class,Serializable)
  */
 public void removeById(Serializable id) {
  removeById(getEntityClass(), id);
 }

 /**
  * 取得Entity的Criteria.
  *
  * @see HibernateGenericDao#createCriteria(Class,Criterion[])
  */
 public Criteria createCriteria(Criterion... criterions) {
  return createCriteria(getEntityClass(), criterions);
 }

 /**
  * 取得Entity的Criteria,带排序参�?
  *
  * @see HibernateGenericDao#createCriteria(Class,String,boolean,Criterion[])
  */
 public Criteria createCriteria(String orderBy, boolean isAsc, Criterion... criterions) {
  return createCriteria(getEntityClass(), orderBy, isAsc, criterions);
 }

 /**
  * 根据属�?名和属�?值查询对�?
  *
  * @return 符合条件的对象列�?
  * @see HibernateGenericDao#findBy(Class,String,Object)
  */
 public List<T> findBy(String propertyName, Object value) {
  return findBy(getEntityClass(), propertyName, value);
 }

 /**
  * 根据属�?名和属�?值查询对�?带排序参�?
  *
  * @return 符合条件的对象列�?
  * @see HibernateGenericDao#findBy(Class,String,Object,String,boolean)
  */
 public List<T> findBy(String propertyName, Object value, String orderBy, boolean isAsc) {
  return findBy(getEntityClass(), propertyName, value, orderBy, isAsc);
 }

 /**
  * 根据属�?名和属�?值查询单个对�?
  *
  * @return 符合条件的唯�?���?or null
  * @see HibernateGenericDao#findUniqueBy(Class,String,Object)
  */
 public T findUniqueBy(String propertyName, Object value) {
  return findUniqueBy(getEntityClass(), propertyName, value);
 }

 /**
  * 判断对象某些属�?的�?在数据库中唯�?
  *
  * @param uniquePropertyNames 在POJO里不能重复的属�?列表,以�?号分�?�?name,loginid,password"
  * @see HibernateGenericDao#isUnique(Class,Object,String)
  */
 public boolean isUnique(Object entity, String uniquePropertyNames) {
  return isUnique(getEntityClass(), entity, uniquePropertyNames);
 }

 public List getAllUser() {
  // TODO 自动生成方法存根
  return super.getAllUser();
 }
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值