hibernate dao 公共方法

  1 package com.dao.impl;
  2
  3 import java.lang.reflect.ParameterizedType;
  4 import java.util.Collection;
  5 import java.util.List;
  6
  7 import org.hibernate.Query;
  8 import org.hibernate.Session;
  9 import org.hibernate.SessionFactory;
 10 import org.springframework.beans.factory.annotation.Autowired;
 11 import org.springframework.beans.factory.annotation.Qualifier;
 12 import org.springframework.stereotype.Repository;
 13
 14 import com.dao.IBaseDao;
 15 import com.exception.CustomException;
 16 import com.utils.BeanUtil;
 17 import com.utils.Page;
 18 import com.utils.QueryObject;
 19 import com.utils.QueryParam;
 20
 21 @SuppressWarnings("unchecked")
 22 @Repository
 23 public class BaseDao<T> implements IBaseDao<T>{
 24
 25     @Autowired(required = true)
 26     @Qualifier("sessionFactory")
 27     private SessionFactory sessionFactory;
 28
 29     protected Session getCurrentSession() {
 30         return this.sessionFactory.getCurrentSession();
 31     }
 32
 33     /**
 34      * @Description: 根据ID获取对象
 35      * @param id ID
 36      * @return T
 37      * @throws Exception
 38      */
 39     public T get(String id) throws CustomException
 40     {
 41         List<T> objects = this.getAllByProperty("objId", id);
 42         if (!objects.isEmpty())
 43         {
 44             return objects.get(0);
 45         }
 46         return null;
 47     }
 48
 49     /**
 50      * @Description: 根据ID获取对象
 51      * @param id ID
 52      * @param c
 53      * @return T
 54      * @throws Exception
 55      */
 56     public Object get(String id,Class c) throws CustomException
 57     {
 58         List<T> objects = (List<T>)this.getAllByProperty("objId", id,c);
 59         if (!objects.isEmpty())
 60         {
 61             return objects.get(0);
 62         }
 63         return null;
 64     }
 65
 66     /**
 67      * @Description: 根据属性获取对象
 68      * @param propertyName 属性
 69      * @param value 值
 70      * @return T
 71      * @throws Exception
 72      */
 73     public T getObjectByProperty(String propertyName,Object value) throws CustomException
 74     {
 75         List<T> objects = this.getAllByProperty(propertyName, value);
 76         if (!objects.isEmpty())
 77         {
 78             return objects.get(0);
 79         }
 80         return null;
 81     }
 82
 83     /**
 84      * @Description: 根据属性获取对象
 85      * @param propertyName 属性
 86      * @param value 值
 87      * @param c
 88      * @return T
 89      * @throws Exception
 90      */
 91     public T getObjectByProperty(String propertyName,Object value,Class c) throws CustomException
 92     {
 93         List<T> objects = (List<T>)this.getAllByProperty(propertyName, value, c);
 94         if (!objects.isEmpty())
 95         {
 96             return objects.get(0);
 97         }
 98         return null;
 99     }
100
101     /**
102      * @Description: 获取所有对象
103      * @return List<T>
104      * @throws Exception
105      */
106     public List<T> getAll() throws CustomException
107     {
108         Class baseClass;
109         try
110         {
111             baseClass = Class.forName(BeanUtil.getParamType(this.getClass()).replace("class ", ""));
112         } catch (ClassNotFoundException e)
113         {
114             throw new CustomException(this.getClass()+"没有泛型! 或者没有重写  getBaseClass() method");
115         }
116         return this.getAll(baseClass);
117     }
118
119     /**
120      * @Description: 获取所有对象
121      * @param c
122      * @return List<T>
123      * @throws Exception
124      */
125     public List<T> getAll(Class c) throws CustomException
126     {
127         String hql = " from "+c.getSimpleName();
128         List<T> objects = this.getCurrentSession().createQuery(hql).list();
129         return objects;
130     }
131
132     /**
133      * @Description: 根据属性获取所有对象
134      * @param propertyName 属性
135      * @param value 值
136      * @return List<T>
137      * @throws Exception
138      */
139     public List<T> getAllByProperty(String propertyName,Object value) throws CustomException
140     {
141         Class baseClass;
142         try
143         {
144             baseClass = Class.forName(BeanUtil.getParamType(this.getClass()).replace("class ", ""));
145         } catch (ClassNotFoundException e)
146         {
147             throw new CustomException(this.getClass()+"没有泛型! 或者没有重写  getBaseClass() method");
148         }
149         return (List<T>)this.getAllByProperty(propertyName, value, baseClass);
150     }
151
152     /**
153      * @Description: 根据属性获取所有对象
154      * @param propertyName 属性
155      * @param value 值
156      * @param c
157      * @return List<T>
158      * @throws Exception
159      */
160     public List<Object> getAllByProperty(String propertyName,Object value,Class c) throws CustomException
161     {
162         StringBuffer hql = new StringBuffer();
163         hql.append(" from "+c.getSimpleName()+" where "+propertyName+" = ‘"+value+"‘");
164         List<Object> objects = this.getCurrentSession().createQuery(hql.toString()).list();
165         return objects;
166     }
167
168     /**
169      * @Description: 保存Object
170      * @param object 实体
171      * @return void
172      * @throws Exception
173      */
174     public void save(T object)throws CustomException
175     {
176         this.getCurrentSession().saveOrUpdate(object);
177     }
178
179     /**
180      * @Description: 保存Object
181      * @param object 实体
182      * @param c
183      * @return void
184      * @throws Exception
185      */
186     public void save(Object object,Class c)throws CustomException
187     {
188         this.getCurrentSession().saveOrUpdate(object);
189     }
190
191     /**
192      * @Description: 保存Object
193      * @param objects 实体
194      * @return void
195      * @throws Exception
196      */
197     public void saveCollections(Collection<T> objects) throws CustomException
198     {
199         for (Object object:objects)
200         {
201             this.save((T)object);
202         }
203     }
204
205     /**
206      * @Description: 保存Object
207      * @param objects 实体
208      * @param c
209      * @return void
210      * @throws Exception
211      */
212     public void saveCollections(Collection<T> objects,Class c) throws CustomException
213     {
214         for (Object object:objects)
215         {
216             this.save((T)object);
217         }
218     }
219
220     /**
221      * @Description: 删除对象
222      * @param id
223      * @return void
224      * @throws Exception
225      */
226     public void remove(String id)
227     {
228         Class baseClass;
229         try
230         {
231             baseClass = Class.forName(BeanUtil.getParamType(this.getClass()).replace("class ", ""));
232         } catch (ClassNotFoundException e)
233         {
234             throw new CustomException(this.getClass()+"没有泛型! 或者没有重写  getBaseClass() method");
235         }
236         this.remove(id, baseClass);
237     }
238
239     /**
240      * @Description: 删除对象
241      * @param ids
242      * @param c
243      * @return void
244      * @throws Exception
245      */
246     public void remove(String[] ids,Class c)
247     {
248         for (String id:ids)
249         {
250             this.remove(id, c);
251         }
252     }
253
254     /**
255      * @Description: 删除对象
256      * @param id
257      * @param c
258      * @return void
259      * @throws Exception
260      */
261     public void remove(String id,Class c)
262     {
263         this.removeObjectByProperty("objId", id, c);
264     }
265
266     /**
267      * @Description: 删除对象
268      * @param object 实体
269      * @return void
270      * @throws Exception
271      */
272     public void remove(T object)
273     {
274         this.getCurrentSession().delete(object);
275     }
276
277     /**
278      * @Description: 删除对象
279      * @param objects
280      * @return void
281      * @throws Exception
282      */
283     public void removeCollections(Collection<T> objects) throws CustomException
284     {
285         for (Object object:objects)
286         {
287             this.remove((T)object);
288         }
289     }
290
291     /**
292      * @Description: 删除对象
293      * @param propertyName 属性名
294      * @param value 值
295      * @return void
296      * @throws Exception
297      */
298     public void removeObjectByProperty(String propertyName,Object value)throws CustomException
299     {
300         Class baseClass;
301         try
302         {
303             baseClass = Class.forName(BeanUtil.getParamType(this.getClass()).replace("class ", ""));
304         }
305         catch (ClassNotFoundException e)
306         {
307             throw new CustomException(this.getClass()+"没有泛型! 或者没有重写  getBaseClass() method");
308         }
309         this.removeObjectByProperty(propertyName, value, baseClass);
310     }
311
312     /**
313      * @Description: 删除对象
314      * @param propertyName 属性名
315      * @param value 值
316      * @param c
317      * @return void
318      * @throws Exception
319      */
320     public void removeObjectByProperty(String propertyName,Object value,Class c)throws CustomException
321     {
322         StringBuffer hql = new StringBuffer();
323         hql.append(" delete ").append(c.getSimpleName()).append(" ");
324         hql.append(" where ").append(propertyName).append(" = ? ");
325         this.getCurrentSession().createQuery(hql.toString()).setParameter(0, value).executeUpdate();
326     }
327
328     /**
329      * @Description: 分页查询
330      * @param queryObject
331      * @param page
332      * @return void
333      * @throws Exception
334      */
335     public void findByQueryObject(QueryObject queryObject,Page page)
336     {
337         StringBuffer hql = new StringBuffer();//hql语句
338         hql.append(" from ").append(queryObject.getEntityClass().getSimpleName()).append(" where 1=1 ");
339         String bieming = "bm";
340         for (QueryParam param:queryObject.getQueryParam().getAndParams()) //循环参数集合,拼接查询条件
341         {
342             if(!QueryParam.OPERATOR_IS.equals(param.getOperator())){
343                 hql.append(" and ").append(param.getName()).append(" ").append(param.getOperator()).append(" ").append(":").append(bieming).append(" ");
344             }else{
345                 hql.append(" and ").append(param.getName()).append(" ").append(param.getOperator()).append(" ").append("null");
346             }
347             bieming += bieming;
348         }
349         String sql = " ";
350         if(queryObject.getQueryProjections().getOrderProperty()!=null)//拼接排序条件
351         {
352             for(String s :queryObject.getQueryProjections().getOrderProperty())
353             {
354                 sql = "order by "+ s ;
355                 if(queryObject.getQueryProjections().getDescFlag()!=null &&queryObject.getQueryProjections().getDescFlag()[0])
356                 {
357                     sql = sql +" desc";
358                 }
359                 else
360                 {
361                     sql = sql + " asc";
362                 }
363             }
364         }
365         Query query = this.getCurrentSession().createQuery(hql.toString()+sql);//查询结果集
366
367         bieming = "bm";
368         for (QueryParam param:queryObject.getQueryParam().getAndParams())
369         {
370             if(    QueryParam.OPERATOR_IN.equals(param.getOperator()) || QueryParam.OPERATOR_NIN.equals(param.getOperator()) || QueryParam.OPERATOR_NOTIN.equals(param.getOperator())){
371                 query.setParameterList(bieming, param.getValue().toString().split(","));
372             }else{
373                 if(!QueryParam.OPERATOR_IS.equals(param.getOperator())){
374                     query.setParameter(bieming, param.getValue());
375                 }
376             }
377             bieming += bieming;
378         }
379         query.setFirstResult(page.getFirstResultNum());//设置分页显示的记录数
380         query.setMaxResults((int)page.getPageSize());
381         page.setData(query.setCacheable(true).list());
382
383         //查询总记录数
384         String hql_1 = "select count(*) " + hql.toString();
385         query = this.getCurrentSession().createQuery(hql_1);
386         bieming = "bm";
387         for (QueryParam param:queryObject.getQueryParam().getAndParams())
388         {
389             if(    QueryParam.OPERATOR_IN.equals(param.getOperator())|| QueryParam.OPERATOR_NIN.equals(param.getOperator()) || QueryParam.OPERATOR_NOTIN.equals(param.getOperator())){
390                 query.setParameterList(bieming, param.getValue().toString().split(","));
391             }else{
392                 if(!QueryParam.OPERATOR_IS.equals(param.getOperator())){
393                     query.setParameter(bieming, param.getValue());
394                 }
395             }
396             bieming += bieming;
397         }
398         page.setTotal((Long)(query.setCacheable(true).list().get(0)));
399     }
400
401     /**
402      * @Description: 公共查询
403      * @param queryObject
404      * @return List<T>
405      * @throws Exception
406      */
407     public List<T> findByQueryObject(QueryObject queryObject)
408     {
409         StringBuffer hql = new StringBuffer();
410         hql.append(" from ").append(queryObject.getEntityClass().getSimpleName()).append(" where 1=1 ");
411         String bieming = "bm";
412         for (QueryParam param:queryObject.getQueryParam().getAndParams())
413         {
414             hql.append(" and ").append(param.getName()).append(" ").append(param.getOperator()).append(" ").append(":").append(bieming).append(" ");
415             bieming += bieming;
416         }
417         Query query = this.getCurrentSession().createQuery(hql.toString());
418         bieming = "bm";
419         for (QueryParam param:queryObject.getQueryParam().getAndParams())
420         {
421             if(    QueryParam.OPERATOR_IN.equals(param.getOperator())|| QueryParam.OPERATOR_NIN.equals(param.getOperator()) || QueryParam.OPERATOR_NOTIN.equals(param.getOperator())){
422                 query.setParameterList(bieming, param.getValue().toString().split(","));
423             }else{
424                 query.setParameter(bieming, param.getValue());
425             }
426             bieming += bieming;
427         }
428         return query.list();
429     }
430
431     /**
432      *
433      * @Description: sql+条件查询
434      * @param @param queryObject
435      * @param @return
436      * @return List<String>
437      * @throws
438      * @author ningpeng
439      * @date 2016年10月21日
440      */
441     public List<Object[]> findDomainByQueryObject(QueryObject queryObject)
442     {
443         StringBuffer SQL = new StringBuffer();
444         String sql = queryObject.getQuerySql();
445         SQL.append(sql);
446
447         for (QueryParam param:queryObject.getQueryParam().getAndParams())
448         {
449             SQL.append(" and ").append(param.getName()).append(" ").append(param.getOperator()).append(" ").append(" ? ");
450         }
451         Query query = this.getCurrentSession().createSQLQuery(sql.toString());
452         for (int i=0;i<queryObject.getQueryParam().getAndParams().size();i++)
453         {
454             query.setParameter(i, queryObject.getQueryParam().getAndParams().get(i).getValue());
455         }
456         return query.list();
457     }
458
459
460     /**
461      * @Description: 修改
462      * @param 修改字段,修改值,条件字段,条件值
463      * @return void
464      * @throws Exception
465      */
466     public void update(String propertyName,Object value,String conditionName,Object conditionValue)throws CustomException
467     {
468         Class baseClass;
469         try
470         {
471             baseClass = Class.forName(BeanUtil.getParamType(this.getClass()).replace("class ", ""));
472         }
473         catch (ClassNotFoundException e)
474         {
475             throw new CustomException(this.getClass()+"没有泛型! 或者没有重写  getBaseClass() method");
476         }
477         this.update(propertyName, value,conditionName,conditionValue,baseClass);
478     }
479
480     /**
481      * @Description: 修改   修改字段,修改值,条件字段,条件值
482      * @param 修改字段,修改值,条件字段,条件值
483      * @param c
484      * @return void
485      * @throws Exception
486      */
487     public void update(String propertyName,Object value,String conditionName,Object conditionValue,Class c)throws CustomException
488     {
489         StringBuffer hql = new StringBuffer();
490         hql.append(" update ").append(c.getSimpleName()).append(" ");
491         hql.append(" set ").append(propertyName).append(" = ? ");
492         hql.append(" where 1=1 and ").append(conditionName).append(" = ? ");
493         this.getCurrentSession().createQuery(hql.toString()).setParameter(0, value).setParameter(1, conditionValue).executeUpdate();
494     }
495
496     /**
497      * @Description: 批量修改   修改字段,修改值,条件字段,条件值
498      * @param 修改字段,修改值,条件字段,条件值
499      * @param c
500      * @return void
501      * @throws Exception
502      */
503     public void update(String propertyName,Object value,String conditionName,Object[] conditionValue,Class c)
504     {
505         for (Object id:conditionValue)
506         {
507             this.update(propertyName, value, conditionName, id);
508         }
509     }
510
511     @Override
512     public String saveObjId(T object) throws CustomException {
513         // TODO Auto-generated method stub
514         return (String)this.getCurrentSession().save(object);
515     }
516
517     public static String getParamType(Class c){
518         if (null != c ) {
519             ParameterizedType type = (ParameterizedType)c.getGenericSuperclass();
520             if (null != type.getActualTypeArguments() && type.getActualTypeArguments().length>0) {
521                 return BeanUtil.toString(type.getActualTypeArguments());
522             }
523         }
524         return "";
525     }
526
527 }
  1  package com.utils;
  2
  3 import java.util.ArrayList;
  4 import java.util.List;
  5
  6 /**
  7  * 查询参数对象
  8  * @ClassName QueryParam
  9  * @Description:TODO(这里用一句话描述这个类的作用)
 10  */
 11 public final class QueryParam {
 12
 13     public final static String AND = "and";
 14
 15     public final static String OR = "or";
 16
 17     public final static String NOT = "not";
 18
 19     public final static String OPERATOR_EQ = "=";
 20
 21     public final static String OPERATOR_BT = "bt";
 22
 23     public final static String OPERATOR_NE = "!=";
 24
 25     public final static String OPERATOR_NE_ANSINULL_OFF = "!=%";
 26
 27     public final static String OPERATOR_GE = ">=";
 28
 29     public final static String OPERATOR_GT = ">";
 30
 31     public final static String OPERATOR_NGE = "!>=";
 32
 33     public final static String OPERATOR_NGT = "!>";
 34
 35     public final static String OPERATOR_LE = "<=";
 36
 37     public final static String OPERATOR_LT = "<";
 38
 39     public final static String OPERATOR_NLE = "!<=";
 40
 41     public final static String OPERATOR_NLT = "!<";
 42
 43     public final static String OPERATOR_LIKE = "like";
 44
 45     public final static String OPERATOR_LEFTLIKE = "llike";
 46
 47     public final static String OPERATOR_RIGHTLIKE = "rlike";
 48
 49     public final static String OPERATOR_NLIKE = "!like";
 50
 51     public final static String OPERATOR_NLEFTLIKE = "!llike";
 52
 53     public final static String OPERATOR_NRIGHTLIKE = "!rlike";
 54
 55     public final static String OPERATOR_INCLUDE = "include";
 56
 57     public final static String OPERATOR_NINCLUDE = "!include";
 58
 59     public final static String OPERATOR_ILIKE = "ilike";
 60
 61     public final static String OPERATOR_NILIKE = "!ilike";
 62
 63     public final static String OPERATOR_IINCLUDE = "iinclude";
 64
 65     public final static String OPERATOR_NIINCLUDE = "!iinclude";
 66
 67     public final static String OPERATOR_IS = "is";
 68
 69     public final static String OPERATOR_NIS = "!is";
 70
 71     public final static String OPERATOR_IN = "in";
 72
 73     public final static String OPERATOR_NIN = "!in";
 74
 75     public final static String OPERATOR_NOTIN = "not in";
 76
 77     public final static String OPERATOR_EXIST = "exists";
 78
 79     public final static String OPERATOR_NEXIST = "not exists";
 80
 81     public final static String FETCH = "fetch";
 82
 83     private String name; //实体属性名,对应请求的键
 84
 85     private Object value; //查询参数,对应请求的值
 86
 87     private String operator = OPERATOR_EQ;//操作符,对应包含“_op”键的值
 88
 89     private List<QueryParam> andParams = new ArrayList<QueryParam>(0);
 90     private List<QueryParam> orParams = new ArrayList<QueryParam>(0);
 91     private List<QueryParam> notParams = new ArrayList<QueryParam>(0);
 92
 93     public QueryParam() {
 94
 95     }
 96
 97     /**
 98      *
 99      * @Title QueryParam
100      * @Description TODO(这里用一句话描述这个方法的作用)
101      * @param name 查询实体的属性名
102      * @param operator 操作符,从请求包含“_op”的键中获取的值
103      * @param value 查询实体属性名所对应的键值
104      * @throws
105      */
106     public QueryParam(String name, String operator, Object value) {
107         if (OPERATOR_LIKE.equals(operator)||OPERATOR_NLIKE.equals(operator)) {
108             value = "%"+value+"%";
109         }
110         if(OPERATOR_IS.equals(operator) || OPERATOR_NIS.equals(operator)) {
111             value=null;
112         }
113         if (null == value || "".equals(value)) {
114             if (OPERATOR_EQ.equals(operator)) {
115                 operator = OPERATOR_IS;
116             } else if (OPERATOR_NE.equals(operator)) {
117                 operator = OPERATOR_NIS;
118             }
119         } else {
120             if (OPERATOR_IS.equals(operator)) {
121                 operator = OPERATOR_EQ;
122             } else if (OPERATOR_NIS.equals(operator)) {
123                 operator = OPERATOR_NE;
124             }
125         }
126         if (OPERATOR_IN.equals(operator) || OPERATOR_NIN.equals(operator)) {
127             //value = value.toString().replaceAll(",", "‘,‘");
128         }
129         if (OPERATOR_EXIST.equals(operator) || OPERATOR_NEXIST.equals(operator)) {
130             value = value.toString().replaceAll(",", "‘,‘");
131         }
132         this.name = name;
133         this.value = value;
134         this.operator = operator;
135         this.validateOperator();
136     }
137
138     public void and(QueryParam queryParam) {
139         andParams.add(queryParam);
140     }
141
142     public void or(QueryParam queryParam) {
143         orParams.add(queryParam);
144     }
145
146     public void not(QueryParam queryParam) {
147         notParams.add(queryParam);
148     }
149
150     public String getName() {
151         return name;
152     }
153
154     public String getOperator() {
155         return operator;
156     }
157
158     public Object getValue() {
159         return value;
160     }
161
162     //检查操作符是否有效
163     private void validateOperator() {
164         if(this.operator.startsWith("not")){
165             if(OPERATOR_NEXIST.equals(this.operator))
166                 return;
167             if(OPERATOR_NOTIN.equals(this.operator))
168                 return;
169         }else if (this.operator.startsWith("!")) {
170             if (this.operator.endsWith("%"))
171                 return;
172             if (OPERATOR_NE.equals(this.operator))
173                 return;
174             if (OPERATOR_NGE.equals(this.operator))
175                 return;
176             if (OPERATOR_NGT.equals(this.operator))
177                 return;
178             if (OPERATOR_NLE.equals(this.operator))
179                 return;
180             if (OPERATOR_NLT.equals(this.operator))
181                 return;
182             if (OPERATOR_NLIKE.equals(this.operator))
183                 return;
184             if (OPERATOR_NLEFTLIKE.equals(this.operator))
185                 return;
186             if (OPERATOR_NRIGHTLIKE.equals(this.operator))
187                 return;
188             if (OPERATOR_NINCLUDE.equals(this.operator))
189                 return;
190             if (OPERATOR_NILIKE.equals(this.operator))
191                 return;
192             if (OPERATOR_NIINCLUDE.equals(this.operator))
193                 return;
194             if (OPERATOR_NIS.equals(this.operator))
195                 return;
196             if (OPERATOR_NIN.equals(this.operator))
197                 return;
198         } else {
199             if (OPERATOR_EQ.equals(this.operator))
200                 return;
201             if (OPERATOR_GE.equals(this.operator))
202                 return;
203             if (OPERATOR_GT.equals(this.operator))
204                 return;
205             if (OPERATOR_LE.equals(this.operator))
206                 return;
207             if (OPERATOR_LT.equals(this.operator))
208                 return;
209             if (OPERATOR_LIKE.equals(this.operator))
210                 return;
211             if (OPERATOR_LEFTLIKE.equals(this.operator))
212                 return;
213             if (OPERATOR_RIGHTLIKE.equals(this.operator))
214                 return;
215             if (OPERATOR_INCLUDE.equals(this.operator))
216                 return;
217             if (OPERATOR_ILIKE.equals(this.operator))
218                 return;
219             if (OPERATOR_IINCLUDE.equals(this.operator))
220                 return;
221             if (OPERATOR_IS.equals(this.operator))
222                 return;
223             if (OPERATOR_IN.equals(this.operator))
224                 return;
225             if (FETCH.equals(this.operator))
226                 return;
227             if (OPERATOR_BT.equals(this.operator))
228                 return;
229             if(OPERATOR_EXIST.equals(this.operator))
230                 return;
231         }
232         throw new RuntimeException ("The operator " + this.operator + " could be incorrect!");
233     }
234
235     public List<QueryParam> getAndParams() {
236         return andParams;
237     }
238
239     public List<QueryParam> getNotParams() {
240         return notParams;
241     }
242
243     public List<QueryParam> getOrParams() {
244         return orParams;
245     }
246
247 }
 1 package com.utils;
 2 import java.lang.reflect.ParameterizedType;
 3
 4 /**
 5  * @Description: 查询对象实现
 6  * @param <T>
 7  * @version V1.0
 8  */
 9 public class QueryObjectBase<T> implements QueryObject<T> {
10     /**
11      * 泛型类参数类型
12      */
13     private Class<T> entityClass;
14
15     private QueryProjections queryProjections=new QueryProjections();
16
17     private String sql;
18
19     /**
20      * 查询参数
21      */
22     private QueryParam queryParam=new QueryParam();
23
24     @SuppressWarnings("unchecked")
25     public Class<T> getEntityClass() {
26         if(this.entityClass==null)
27             return (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
28         return this.entityClass;
29     }
30     public void setEntityClass(Class<T> entityClass) {
31         this.entityClass = entityClass;
32     }
33     public QueryProjections getQueryProjections() {
34         return queryProjections;
35     }
36     public void setQueryProjections(QueryProjections queryProjections) {
37         this.queryProjections = queryProjections;
38     }
39     public QueryParam getQueryParam() {
40         return queryParam;
41     }
42     public void setQueryParam(QueryParam queryParam) {
43         this.queryParam = queryParam;
44     }
45     public void setQuerySql(String sql) {
46         this.sql = sql;
47     }
48     public String getQuerySql() {
49         return sql;
50     }
51 }

原文地址:https://www.cnblogs.com/bowei/p/8461979.html

时间: 2024-10-05 04:58:40

hibernate dao 公共方法的相关文章

mybatis开发dao的方法

mybatis开发dao的方法 1.1     SqlSession使用范围 1.1.1     SqlSessionFactoryBuilder 1 //以流的方式读取总的配置文件 2 Reader reader = Resources.getResourceAsReader("mybatis-config.xml"); 3 4 //生成SqlSessionFactory 5 SqlSessionFactory sqlSessionFactory = new SqlSessionFa

【MyBatis学习03】原始dao开发方法及其弊端

上一篇博文总结了一下mybatis的入门,接下来就要开发dao方法了,这篇博文主要总结一下mybatis中原始dao开发的方法,最后并总结一下原始dao开发方法的弊端.mybatis中dao开发应该使用mapper代理的方法,这将在下一篇博文中介绍. 原始dao开发思路比较简单,写个dao接口和dao实现类即可.需要向dao实现类中注入sqlSessionFactory,在方法体内通过sqlSessionFactory创建sqlSession.为什么在方法体内创建呢?因为mybatis中sqlS

公共方法

一些公共方法可以放入application中,项目工程在运行过程中,先运行application,再执行activity. 而且,application与activity的生命周期不同.application的生命周期从启动项目开始,到整个项目关闭之后结束,而activity的生命周期短. http://www.docin.com/p-478636767.html

【转】Hibernate的getSQLQuery方法对char类型的解析问题

[转]Hibernate的getSQLQuery方法对char类型的解析问题 建立数据库: create table T_TEST1( id char (32), name varchar (255), other varchar (255), primary key(id) )insert into T_TEST1 values('2c9090792a18d6ab012a18d77e700001','sfasdf','asdf') insert into T_TEST1 values('2c9

iOS 常用公共方法

iOS常用公共方法 1. 获取磁盘总空间大小 //磁盘总空间 + (CGFloat)diskOfAllSizeMBytes{ CGFloat size = 0.0; NSError *error; NSDictionary *dic = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error]; if (error) { #ifdef DEBUG NSLog(@&quo

oneThink公共方法

1. 常用公共方法 1 <?php 2 // +---------------------------------------------------------------------- 3 // | OneThink [ WE CAN DO IT JUST THINK IT ] 4 // +---------------------------------------------------------------------- 5 // | Copyright (c) 2013 http:

java-mybaits-00202-DAO-原始DAO开发方法

原始Dao开发方法需要程序员编写Dao接口和Dao实现类. 原本的ibatis的 需要在dao实现类中注入一个SqlSessionFactory工厂. 1.思路 程序员需要写dao接口和dao实现类. 需要向dao实现类中注入SqlSessionFactory,在方法体内通过SqlSessionFactory创建SqlSession 2  映射文件 使用上一节 3.Dao编写 public interface UserDao { // 一般会把异常抛出 public User getUserBy

mybatis系列-04-mybatis开发dao的方法

4.1     SqlSession使用范围 4.1.1     SqlSessionFactoryBuilder 通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory 将SqlSessionFactoryBuilder当成一个工具类使用即可,不需要使用单例管理SqlSessionFactoryBuilder. 在需要创建SqlSessionFactory时候,只需要new一次SqlSessionFactoryBuilder即可. 4.1.2    

单元测试时候使用[ClassInitialize]会该方法必须是静态的公共方法,不返回值并且应采用一个TestContext类型的参数报错的解决办法

using Microsoft.VisualStudio.TestTools.UnitTesting; 如果该DLL应用的是 C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 版本为9.0.0.0 的话,则使用[ClassInitialize]会该方法必须是静态的公共方法,不返回值并且