1. package ao.base.hibernate;
2.
3. import java.io.Serializable;
4. import java.util.Collection;
5. import java.util.List;
6.
7. import dao.obj.AbstractHandleObj;
8.
9. import org.hibernate.type.Type;
10.
11. /**
12. * 基础Dao接口,定义通用的操作
13. *
14. * @version v1.1 2009/07/17
15. *
16. */
17. public interface IBaseDao {
18.
19. /**
20. * 对于返回列表的方法,通过调用我来实现返回记录数的控制,
21. * 设置返回记录数,若 top为0不设置
22. */
23. public void setMaxResults(int top);
24.
25. /**
26. * 保存 AbstractHandleObj实体
27. * @param hobj 继承AbstractHandleObj抽象类的实体
28. * @return Serializable 主键
29. */
30. public Serializable save(AbstractHandleObj hobj);
31.
32. /**
33. * 更新 AbstractHandleObj实体
34. * @param hobj 继承AbstractHandleObj抽象类的实体
35. */
36. public void update(AbstractHandleObj hobj);
37.
38. /**
39. * 保存或更新 AbstractHandleObj实体
40. * @param hobj 继承AbstractHandleObj抽象类的实体
41. */
42. public void saveOrUpdate(AbstractHandleObj hobj);
43.
44. /**
45. * 保存或跟新实体集合 Collection<AbstractHandleObj>
46. * 若实体已经存(根据主键判断)在则更新实体,则保存实体
47. * @param hobjList 继承AbstractHandleObj抽象类的实体集合
48. */
49. public void saveOrUpdateAll(Collection<AbstractHandleObj> hobjList);
50.
51. /**
52. * 删除 AbstractHandleObj实体
53. * @param hobj 继承AbstractHandleObj抽象类的实体
54. */
55. public void delete(AbstractHandleObj hobj);
56.
57. /**
58. * 删除 Collection<AbstractHandleObj>集合实体
59. * @param hobjList 继承AbstractHandleObj抽象类的实体集合
60. */
61. public void deleteAll(Collection<AbstractHandleObj> hobjList);
62.
63. /**
64. * 根据主键值获得继承 AbstractHandleObj的实体
65. * @param entityName 继承AbstractHandleObj抽象类的实体名称(注:包含包名)
66. * @param id 实体主键
67. * @return AbstractHandleObj
68. */
69. public AbstractHandleObj findByID(String entityName, String id);
70.
71. /**
72. * 根据hql语句查找 AbstractHandleObj,返回List<AbstractHandleObj>类型
73. * @param hql HQL 查询语句
74. * @return List<AbstractHandleObj>
75. */
76. public List<AbstractHandleObj> findAbstractHandleObjByHqlQuery(String hql);
77.
78. /**
79. * 根据hql语句查找 AbstractHandleObj,返回List<AbstractHandleObj>类型
80. * @param hql HQL 查询语句
81. * @param obj 查询参数,匹配站位符?
82. * @return List<AbstractHandleObj>
83. */
84. public List<AbstractHandleObj> findAbstractHandleObjByHqlQuery(String hql, Object obj);
85.
86. /**
87. * 根据hql语句查找 AbstractHandleObj,返回List<AbstractHandleObj>类型
88. * @param hql HQL 查询语句
89. * @param objs 查询参数数组,按顺序匹配站位符?
90. * @return List<AbstractHandleObj>
91. */
92. public List<AbstractHandleObj> findAbstractHandleObjByHqlQuery(String hql, Object[] objs);
93.
94. /**
95. * 根据hql语句查找某些列,返回List<Object[]>类型
96. * @param hql HQL 查询语句
97. * @return List<Object[]>
98. */
99. public List<Object[]> findColsByHqlQuery(String hql);
100.
101. /**
102. * 根据hql语句查找某些列,返回List<Object[]>类型
103. * @param hql HQL 查询语句
104. * @param obj 查询参数,匹配站位符?
105. * @return List<Object[]>
106. */
107. public List<Object[]> findColsByHqlQuery(String hql, Object obj);
108.
109. /**
110. * 根据hql语句查找某些列,返回List<Object[]>类型
111. * @param hql HQL 查询语句
112. * @param objs 查询参数数组,按顺序匹配站位符?
113. * @return List<Object[]>
114. */
115. public List<Object[]> findColsByHqlQuery(String hql, Object[] objs) ;
116.
117. /**
118. * 根据hql语句查找某些列,返回List<Object>类型
119. * @param hql HQL 查询语句
120. * @return List<Object>
121. */
122. public List<Object> findColByHqlQuery(String hql) ;
123.
124. /**
125. * 根据hql语句查找某些列,返回List<Object>类型
126. * @param hql HQL 查询语句
127. * @param obj 查询参数,匹配站位符?
128. * @return List<Object>
129. */
130. public List<Object> findColByHqlQuery(String hql, Object obj);
131.
132. /**
133. * 根据hql语句查找某些列,返回List<Object>类型
134. * @param hql HQL 查询语句
135. * @param objs 查询参数数组,按顺序匹配站位符?
136. * @return List<Object>
137. */
138. public List<Object> findColByHqlQuery(String hql, Object[] objs);
139.
140. /**
141. * 根据hql语句查找某些列,返回List<String[]>类型,支持分页
142. * @param hql HQL 查询语句
143. * @param start 查找记录数其实位置(从0开始)
144. * @param reCount 要返回的记录数(页显示记录数)
145. * @return List<Object[]>
146. */
147. public List<Object[]> findColsByHqlQuerySupportPaging(String hql, int start, int reCount);
148.
149. /**
150. * 根据hql语句查找某些列,返回List<String[]>类型,支持分页
151. * @param hql HQL 查询语句
152. * @param objs 查询参数数组,按顺序匹配站位符?
153. * @param types 查询参数类型数组,按顺序对应objs中的参数类型
154. * 注:参数必须是Hibernate类型的,比如String对应Hibernate.STRING,boolean对应Hibernate.BOOLEAN等
155. * @param start 查找记录数其实位置(从0开始)
156. * @param reCount 要返回的记录数(页显示记录数)
157. * @return List<Object[]>
158. */
159. public List<Object[]> findColsByHqlQuerySupportPaging(String hql, Object[] objs,
160. Type[] types, int start, int reCount);
161.
162. /**
163. * 根据hql语句查找,获得记录数
164. * 例如:select count(*) from T
165. * @param hql HQL 查询语句
166. * @return long
167. */
168. public long getRecordCountByHqlQuery(String hql) ;
169.
170. /**
171. * 根据hql语句查找,获得记录数
172. * 例如:select count(*) from T where ...
173. * @param hql HQL 查询语句
174. * @param obj 查询参数,匹配站位符?
175. * @return long
176. */
177. public long getRecordCountByHqlQuery(String hql, Object obj) ;
178.
179. /**
180. * 根据hql语句查找,获得记录数
181. * 例如:select count(*) from T where ...
182. * @param hql
183. * @param objs 查询参数数组,按顺序匹配站位符?
184. * @return long
185. */
186. public long getRecordCountByHqlQuery(String hql, Object[] objs) ;
187.
188. /**
189. * 执行更新update/ 删除delete操作
190. * @param hql
191. * @return int 更新数量/删除数量
192. */
193. public int executeHqlQuery(String hql) ;
194.
195. /**
196. * 执行更新update/ 删除delete操作
197. * @param hql
198. * @param obj 查询参数,匹配站位符?
199. * @return int 更新数量/删除数量
200. */
201. public int executeHqlQuery(String hql, Object obj);
202.
203. /**
204. * 执行更新update/ 删除delete操作
205. * @param hql
206. * @param objs 查询参数数组,按顺序匹配站位符?
207. * @return int 更新数量/删除数量
208. */
209. public int executeHqlQuery(String hql, Object[] objs) ;
210.
211. /**
212. * 根据hql语句查找 AbstractHandleObj,返回List<AbstractHandleObj>类型,支持分页
213. * @param hql HQL 查询语句
214. * @param start 查找记录数其实位置(从0开始)
215. * @param reCount 要返回的记录数(页显示记录数)
216. * @return List<AbstractHandleObj>
217. */
218. public List<AbstractHandleObj> findAbstractHandleObjByHqlQuerySupportPaging(String hql,
219. int start, int reCount);
220.
221. /**
222. * 根据hql语句查找 AbstractHandleObj,返回List<AbstractHandleObj>类型,支持分页
223. * @param hql HQL 查询语句
224. * @param objs 查询参数数组,按顺序匹配站位符?
225. * @param types 查询参数类型数组,按顺序对应objs中的参数类型
226. * 注:参数必须是Hibernate类型的,比如String对应Hibernate.STRING,boolean对应Hibernate.BOOLEAN等
227. * @param start 查找记录数其实位置(从0开始)
228. * @param reCount 要返回的记录数(页显示记录数)
229. * @return List<AbstractHandleObj>
230. */
231. public List<AbstractHandleObj> findAbstractHandleObjByHqlQuerySupportPaging(String hql, Object[] objs,
232. Type[] types, int start, int reCount) ;
233.
234. /**
235. * 支持SQL查询,根据 sql语句查找某些列,返回List<String[]>类型
236. * @param sql SQL 查询语句
237. * @return List<Object[]>
238. */
239. public List<Object[]> findColsBySqlQuery(String sql) ;
240.
241. /**
242. * 支持SQL查询,根据 sql语句查找某列,返回List<Object>类型
243. * @param sql SQL 查询语句
244. * @return List<Object>
245. */
246. public List<Object> findColBySqlQuery(String sql) ;
247.
# package dao.base.hibernate;
#
# import java.io.Serializable;
# import java.sql.SQLException;
# import java.util.ArrayList;
# import java.util.Collection;
# import java.util.List;
#
# import dao.obj.AbstractHandleObj;
#
# import org.hibernate.HibernateException;
# import org.hibernate.Query;
# import org.hibernate.Session;
# import org.hibernate.type.Type;
# import org.springframework.orm.hibernate3.HibernateCallback;
# import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
#
#
#
# /**
# * 基础Dao接口,实现通用操作
# * @version v1.1 2009/07/17
# *
# */
# public class BaseDaoImpl extends HibernateDaoSupport implements IBaseDao {
#
#
# /**
# * 对于返回列表的方法,通过调用我来实现返回记录数的控制,
# * 设置返回记录数,若 top为0不设置
# */
# public void setMaxResults(int top){
# if(top > 0){
# getHibernateTemplate().setMaxResults(top);
# }
# }
#
# public Serializable save(AbstractHandleObj hobj){
# return getHibernateTemplate().save(hobj);
# }
#
# public void update(AbstractHandleObj hobj) {
# getHibernateTemplate().update(hobj);
#
# }
#
# public void saveOrUpdate(AbstractHandleObj hobj) {
# getHibernateTemplate().saveOrUpdate(hobj);
#
# }
#
# public void saveOrUpdateAll(Collection<AbstractHandleObj> hobjList) {
# getHibernateTemplate().saveOrUpdateAll(hobjList);
# }
#
# public void delete(AbstractHandleObj hobj) {
# getHibernateTemplate().delete(hobj);
# }
#
# public void deleteAll(Collection<AbstractHandleObj> hobjList) {
# getHibernateTemplate().deleteAll(hobjList);
# }
#
# public AbstractHandleObj findByID(String entityName, String id)
# {
# return (AbstractHandleObj) getHibernateTemplate().get(entityName, id);
# }
#
# @SuppressWarnings("unchecked")
# public List<AbstractHandleObj> findAbstractHandleObjByHqlQuery(String hql)
# {
# List<AbstractHandleObj> resultList = new ArrayList<AbstractHandleObj>();
# resultList = getHibernateTemplate().find(hql);
# return resultList;
# }
#
# @SuppressWarnings("unchecked")
# public List<AbstractHandleObj> findAbstractHandleObjByHqlQuery(String hql, Object obj)
# {
# List<AbstractHandleObj> resultList = new ArrayList<AbstractHandleObj>();
# resultList = getHibernateTemplate().find(hql, obj);
# return resultList;
# }
#
# @SuppressWarnings("unchecked")
# public List<AbstractHandleObj> findAbstractHandleObjByHqlQuery(String hql, Object[] objs)
# {
# List<AbstractHandleObj> resultList = new ArrayList<AbstractHandleObj>();
# resultList = getHibernateTemplate().find(hql, objs);
# return resultList;
# }
#
# @SuppressWarnings("unchecked")
# public List<Object[]> findColsByHqlQuery(String hql)
# {
# List<Object[]> resultList = getHibernateTemplate().find(hql);
# return resultList;
# }
#
# @SuppressWarnings("unchecked")
# public List<Object[]> findColsByHqlQuery(String hql, Object obj)
# {
# List<Object[]> resultList = getHibernateTemplate().find(hql, obj);
# return resultList;
# }
#
# @SuppressWarnings("unchecked")
# public List<Object[]> findColsByHqlQuery(String hql, Object[] objs)
# {
# List<Object[]> resultList = getHibernateTemplate().find(hql, objs);
# return resultList;
# }
#
# @SuppressWarnings("unchecked")
# public List<Object> findColByHqlQuery(String hql)
# {
# List<Object> resultList = getHibernateTemplate().find(hql);
# return resultList;
# }
#
# @SuppressWarnings("unchecked")
# public List<Object> findColByHqlQuery(String hql, Object obj)
# {
# List<Object> resultList = getHibernateTemplate().find(hql, obj);
# return resultList;
# }
#
# @SuppressWarnings("unchecked")
# public List<Object> findColByHqlQuery(String hql, Object[] objs)
# {
# List<Object> resultList = getHibernateTemplate().find(hql, objs);
# return resultList;
# }
#
# @SuppressWarnings("unchecked")
# public List<Object[]> findColsByHqlQuerySupportPaging(final String hql,final int start,
# final int reCount) {
# List<Object[]> resultList = getHibernateTemplate().executeFind(new HibernateCallback(){
# public Object doInHibernate(Session session)
# throws HibernateException, SQLException {
# Query query = session.createQuery(hql);
# query.setFirstResult(start);
# query.setMaxResults(reCount);
#
# return query.list();
# }
# });
# return resultList;
# }
#
# @SuppressWarnings("unchecked")
# public List<Object[]> findColsByHqlQuerySupportPaging(final String hql,
# final Object[] objs, final Type[] types, final int start, final int reCount)
# {
# List<Object[]> resultList = getHibernateTemplate().executeFind(new HibernateCallback(){
# public Object doInHibernate(Session session)
# throws HibernateException, SQLException {
# Query query = session.createQuery(hql);
# /*设置参数*/
# query.setParameters(objs, types);
# query.setFirstResult(start);
# query.setMaxResults(reCount);
#
# return query.list();
# }
# });
# return resultList;
# }
#
# public long getRecordCountByHqlQuery(String hql) {
# long recordCount = (Long) getHibernateTemplate().find(hql).get(0);
# return recordCount;
# }
#
# public long getRecordCountByHqlQuery(String hql, Object obj) {
# long recordCount = (Long) getHibernateTemplate().find(hql, obj).get(0);
# return recordCount;
# }
#
# public long getRecordCountByHqlQuery(String hql, Object[] objs) {
# long recordCount = (Long) getHibernateTemplate().find(hql, objs).get(0);
# return recordCount;
# }
#
# public int executeHqlQuery(String hql) {
# return getHibernateTemplate().bulkUpdate(hql);
# }
#
# public int executeHqlQuery(String hql, Object obj) {
# return getHibernateTemplate().bulkUpdate(hql, obj);
# }
#
# public int executeHqlQuery(String hql, Object[] objs) {
# return getHibernateTemplate().bulkUpdate(hql, objs);
# }
#
# @SuppressWarnings("unchecked")
# public List<AbstractHandleObj> findAbstractHandleObjByHqlQuerySupportPaging(final String hql,
# final int start, final int reCount) {
# List<AbstractHandleObj> resultList = getHibernateTemplate().executeFind(new HibernateCallback(){
# public Object doInHibernate(Session session)
# throws HibernateException, SQLException {
# Query query = session.createQuery(hql);
# query.setFirstResult(start);
# query.setMaxResults(reCount);
#
# return query.list();
# }
# });
# return resultList;
# }
#
# @SuppressWarnings("unchecked")
# public List<AbstractHandleObj> findAbstractHandleObjByHqlQuerySupportPaging(final String hql, final Object[] objs,
# final Type[] types, final int start, final int reCount) {
# List<AbstractHandleObj> resultList = getHibernateTemplate().executeFind(new HibernateCallback(){
# public Object doInHibernate(Session session)
# throws HibernateException, SQLException {
# Query query = session.createQuery(hql);
# /*设置参数*/
# query.setParameters(objs, types);
# query.setFirstResult(start);
# query.setMaxResults(reCount);
#
# return query.list();
# }
# });
# return resultList;
# }
#
# @SuppressWarnings("unchecked")
# public List<Object[]> findColsBySqlQuery(final String sql) {
# List<Object[]> resultList = new ArrayList<Object[]>();
# Session session = getHibernateTemplate().getSessionFactory().openSession();
# resultList = session.createSQLQuery(sql).list();
# session.close();
# return resultList;
# }
#
# @SuppressWarnings("unchecked")
# public List<Object> findColBySqlQuery(String sql) {
# List<Object> resultList = new ArrayList<Object>();
# Session session = getHibernateTemplate().getSessionFactory().openSession();
# resultList = session.createSQLQuery(sql).list();
# session.close();
# return resultList;
# }
#
# public int executeSqlQuery(final String sql) {
# int result = 0;
# Session session = getHibernateTemplate().getSessionFactory().openSession();
# result = session.createSQLQuery(sql).executeUpdate();
# session.close();
# return result;
# }
} 248. /**
249. * 支持SQL操作,执行 sql语句update/delete/存储过程
250. * @param sql SQL 语句
251. * @return int
252. */
253. public int executeSqlQuery(String sql) ;
254.
255. }