SSH2整合通用DAO基类,暂不含分页

SSH2整合通用DAO基类,暂不含分页

   目前正在做SSH2整合项目,写了一个DAO基类,发上来大家提提意见,看能不能在改进一下。

 1  /**
 2   * @(#)IBaseDAO.java 2009-9-14 下午03:05:59
 3   * Copyright 2009 Bobby_Guo, Inc. All rights reserved
 4    */
 5  package  cn.commonframework.util;
 6 
 7  import  java.io.Serializable;
 8  import  java.util.List;
 9 
10  import  org.hibernate.criterion.Criterion;
11 
12  /**
13   * @description:公用DAO接口,包含基本的增、删、改、查操作.
14   *  @author   :Bobby_Guo <br>
15   *  @version  :1.0    <br>
16   * @date    :2009-9-14 下午03:12:53 <br>
17   *  @param  <T>
18    */
19  public   interface  IBaseDAO < T >  {
20       /**
21       * 保存一个实体对象
22       *  @param  t
23        */
24       public   void  save(T t);
25       /**
26       * 更新一个实体对象
27       *  @param  t
28        */
29       public   void  update(T t);
30       /**
31       * 批量更新
32       *  @param  hql
33       *  @param  o
34       *  @return
35        */
36       public   int  batchUpdate(String hql,Object o);
37       /**
38       * 删除一个实体对象
39       *  @param  t
40        */
41       public   void  delete(T t);
42       /**
43       * 根据主键查找实体对象
44       *  @param  id
45       *  @return
46        */
47       public  T findById(Serializable id);
48       /**
49       * 查找所有实体对象
50       *  @return
51        */
52       public  List < T >  getAll();
53       /**
54       * HQL查询
55       *  @param  hql
56       *  @return
57        */
58       public  List < T >  getAllByHql(String hql);
59       /**
60       * QBC查询
61       *  @param  criterion
62       *  @return
63        */
64       public  List < T >  getAllByCriteria(Criterion criterion);
65       /**
66       * QBE查询
67       *  @return
68        */
69       public  List < T >  getAllByExample(T t, boolean  enableLike,String properties);
70       /**
71       * 默认的QBE查询
72       *  @param  t
73       *  @return
74        */
75       public  List < T >  getAllByExample(T t);
76  }
77 

下面是BaseDAO类:

BaseDAO.java
  1 /**
  2  * @(#)BaseDAO.java 2009-9-14 下午03:26:46
  3  * Copyright 2009 Bobby_Guo, Inc. All rights reserved
  4  */
  5 package cn.commonframework.util;
  6 
  7 import java.io.Serializable;
  8 import java.util.List;
  9 import org.hibernate.criterion.Criterion;
 10 import org.hibernate.criterion.DetachedCriteria;
 11 import org.hibernate.criterion.Example;
 12 import org.hibernate.criterion.MatchMode;
 13 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
 14 
 15 /**
 16  * DAO基类,实现公用DAO接口,提供基本的数据库操作。采用泛型设计,增强代码的复用性。
 17  * @author  :Bobby_Guo <br>
 18  * @version :1.0    <br>
 19  * @date    :2009-9-14 下午03:26:46 <br>
 20  */
 21 public class BaseDAO<T> extends HibernateDaoSupport implements IBaseDAO<T> {
 22     
 23     /**
 24      * 声明一个实体类
 25      */
 26     private Class<T> entityClass;
 27     /**
 28      * 无参构造方法
 29      */
 30     public BaseDAO(){
 31         
 32     }
 33     /**
 34      * 构造方法 初始化实体类
 35      * @param entityClass
 36      */
 37     public BaseDAO(Class<T> entityClass){
 38         this.entityClass = entityClass;
 39     }
 40     /**
 41      * 删除一个实体对象。
 42      */
 43     public void delete(T t) {
 44         this.getHibernateTemplate().delete(t);
 45         
 46     }
 47     /**
 48      * 根据主键检索实体对象
 49      */
 50     @SuppressWarnings("unchecked")
 51     public T findById(Serializable id) {
 52         return (T) this.getHibernateTemplate().load(entityClass, id);
 53     }
 54     /**
 55      * 查找所有记录。
 56      */
 57     @SuppressWarnings("unchecked")
 58     public List<T> getAll() {
 59         DetachedCriteria criteria =  DetachedCriteria.forClass(entityClass);
 60         
 61         return this.getHibernateTemplate().findByCriteria(criteria);
 62     }
 63     /**
 64      * 保存实体对象
 65      */
 66     public void save(T t) {
 67         
 68             this.getHibernateTemplate().save(t);
 69         
 70         
 71     }
 72     /**
 73      * 更新实体对象
 74      */
 75     public void update(T t) {
 76         this.getHibernateTemplate().update(t);
 77         
 78     }
 79     /**
 80      * 批量更新
 81      */
 82     public int batchUpdate(String hql,Object o){
 83         
 84         return this.getHibernateTemplate().bulkUpdate(hql, o);
 85     }
 86     /**
 87      * QBC查询
 88      */
 89     @SuppressWarnings("unchecked")
 90     public List<T> getAllByCriteria(Criterion criterion) {
 91         DetachedCriteria criteria =  DetachedCriteria.forClass(entityClass);
 92         for(Criterion c : criterion){
 93             criteria.add(c);
 94         }
 95         return this.getHibernateTemplate().findByCriteria(criteria);
 96     }
 97     /**
 98      * QBE查询 enableLike表示是否为模糊查询 properties为模版对象中要除去的属性名称
 99      */
100     public List<T> getAllByExample(T t, boolean enableLike,
101             String properties) {
102         Example example = null;
103         if(enableLike){
104              example = Example.create(t).ignoreCase().enableLike(MatchMode.ANYWHERE).excludeZeroes();
105         }else{
106              example = Example.create(t);
107         }
108         for(String s : properties){
109             example.excludeProperty(s);
110         }
111         return this.getAllByCriteria(example);
112     }
113     /**
114      * HQL查询
115      */
116     @SuppressWarnings("unchecked")
117     public List<T> getAllByHql(String hql) {
118         
119         return this.getHibernateTemplate().find(hql);
120     }
121     /**
122      * QBE查询 精确查询
123      */
124     @SuppressWarnings("unchecked")
125     public List<T> getAllByExample(T t){
126         return this.getHibernateTemplate().findByExample(t);
127     }
128 
129 }
130

你可能感兴趣的:(SSH2整合通用DAO基类,暂不含分页)