引用"Spring"手册上的话说: Hibernate+Spring显然是天生的结合.
下面是我用spring处理的一个HibernateDAO实例,可以看到,代码量大大减少了.
12 package infoweb.dao;
3
4 import java.util.List;
5 import java.util.Iterator;
6
7 import infoweb.pojo.Info;
8
9
10 import net.sf.hibernate.HibernateException;
11 import net.sf.hibernate.Query;
12 import net.sf.hibernate.Session;
13
14 import org.springframework.orm.hibernate.HibernateCallback;
15 import org.springframework.orm.hibernate.support.HibernateDaoSupport;
16
17
18 /**
19 * <p>Title: </p>
20 * <p>Description: </p>
21 * <p>Copyright: Copyright (c) 2004</p>
22 * <p>Company: </p>
23 * @author 段洪杰
24 * @version 1.0
25 */
26 27 public class InfoDAOImpl extends HibernateDaoSupport implements IInfoDAO {
29 * 构造函数
30 */

33 }
35
36 /**
37 * 增加记录
38 * @param info Info
39 */

42 }
44
45 /**
46 * 通过ID取得记录
47 * @param id String
48 * @return Info
49 */

52 return info;
53 }
55
56 /**
57 * 修改记录
58 * @param Info info
59 */

62 }
64
65 /**
66 * 删除记录
67 * @param Info info
68 */

71 }
73
74 ////////////////////////////////////////////////////////
75 ///// ///
76 /////以下部份不带审核功能 ///
77 ///// ///
78 ////////////////////////////////////////////////////////
79
80 /**
81 * 取记录总数
82 * @return int
83 */

86 String queryString = "select count(*) from Info";
87 count = ((Integer) getHibernateTemplate().iterate(queryString).next()).
88 intValue();
89 return count;
90 }
92
93 /**
94 * 取所有记录集合
95 * @return Iterator
96 */

99 String queryString = " select info from Info as info order by info.id desc";
100 List list = getHibernateTemplate().find(queryString);
101 iterator = list.iterator();
102 return iterator;
103 }
105
106 /**
107 * 取记录集合
108 * @return Iterator
109 * @param int position, int length
110 */

113 String queryString = " select info from Info as info order by info.id desc";
114 Query query = getHibernateTemplate().createQuery(getSession(), queryString);
115 //设置游标的起始点
116 query.setFirstResult(position);
117 //设置游标的长度
118 query.setMaxResults(length);
119 //记录生成
120 List list = query.list();
121 //把查询到的结果放入迭代器
122 iterator = list.iterator();
123 return iterator;
124 }
126
127 /**
128 * 取第一条记录
129 * @throws Exception
130 * @return Station
131 */

134 Info info = null;
135 String queryString = "select info from Info as info order by info.id desc";
136 Query query = getHibernateTemplate().createQuery(getSession(), queryString);
137 //记录生成
138 List list = query.list();
139 //把查询到的结果放入迭代器
140 iterator = list.iterator();

143 }
145 }
147
148 /**
149 * 取最后一条记录
150 * @throws Exception
151 * @return Station
152 */

155 Info info = null;
156 String queryString = "select info from Info as info order by info.id asc";
157 Query query = getHibernateTemplate().createQuery(getSession(), queryString);
158 //记录生成
159 List list = query.list();
160 //把查询到的结果放入迭代器
161 iterator = list.iterator();

164 }
166
167 }
169
170 ////////////////////////////////////////////////////////
171 ///// ///
172 ///// 以下部份表中要有特定字段才能 ///
173 ///// ///
174 ////////////////////////////////////////////////////////
175
176 /**
177 * 取符合条件记录总数, [表中要有 isperson 字段]
178 * @return int
179 * @param int isPerson
180 */
181

184 String queryString =
185 "select count(*) from Info as info where info.isperson =" + isPerson;
186 count = ((Integer) getHibernateTemplate().iterate(queryString).next()).
187 intValue();
188 return count;
189 }
191
192 /**
193 * 取所有符合条件记录集合, 模糊查询条件.[表中要有 isperson 字段]
194 * @return Iterator
195 * @param int isPerson
196 */
197

200 String queryString = " select info from Info as info where info.isperson =" +
201 isPerson + " order by info.id desc";
202 List list = getHibernateTemplate().find(queryString);
203 //把查询到的结果放入迭代器
204 iterator = list.iterator();
205 return iterator;
206 }
208
209 /**
210 * 取符合条件记录集合, 模糊查询条件.[表中要有 isperson 字段]
211 * @return Iterator
212 * @param int isPerson,int position, int length
213 */
214
215 public Iterator getInfosByIsperson(int isPerson, int position, int length) throws

218 String queryString = " select info from Info as info where info.isperson =" +
219 isPerson + " order by info.id desc";
220 //创建查询
221 Query query = getHibernateTemplate().createQuery(getSession(), queryString);
222 //设置游标的起始点
223 query.setFirstResult(position);
224 //设置游标的长度
225 query.setMaxResults(length);
226 //记录生成
227 List list = query.list();
228 //把查询到的结果放入迭代器
229 iterator = list.iterator();
230 return iterator;
231 }
233
234 ////////////////////////////////////////////////////////
235 ///// ///
236 ///// 以下部份表中要有特定字段才能 查询部份 ///
237 ///// ///
238 ///////////////////////////////////////////////////////
239 /**
240 * 取符合条件记录总数, 模糊查询条件.[表中要有 title 字段]
241 * @return int
242 * @param String text
243 */

246 count = ((Integer) getHibernateTemplate().iterate(
247 "select count(*) from Info as info where info.title like '%" + text +
248 "%'").next()).intValue();
249 return count;
250 }
252
253 /**
254 * 取所有符合条件记录集合, 模糊查询条件.[表中要有 title 字段]
255 * @return Iterator
256 * @param String text
257 */
258

261 String queryString =
262 " select info from Info as info where info.title like '%" + text +
263 "%' order by info.id desc";
264 //创建查询
265 Query query = getHibernateTemplate().createQuery(getSession(), queryString);
266 //记录生成
267 List list = query.list();
268 //把查询到的结果放入迭代器
269 iterator = list.iterator();
270 return iterator;
271 }
273
274 /**
275 * 取符合条件记录集合, 模糊查询条件.[表中要有 title 字段]
276 * @return Iterator
277 * @param String text,int position, int length
278 */
279 public Iterator getInfos(String text, int position, int length) throws

282 String queryString =
283 " select info from Info as info where info.title like '%" + text +
284 "%' order by info.id desc";
285
286 //创建查询
287 Query query = getHibernateTemplate().createQuery(getSession(), queryString);
288 //设置游标的起始点
289 query.setFirstResult(position);
290 //设置游标的长度
291 query.setMaxResults(length);
292 //记录生成
293 List list = query.list();
294 //把查询到的结果放入迭代器
295 iterator = list.iterator();
296 return iterator;
297 }
299
300 ////////////////////////////////////////////////////////
301 ///// ///
302 ///// 以下部份表中要有特定字段才能 ///
303 ///// ///
304 ////////////////////////////////////////////////////////
305
306 /**
307 * 取符合条件记录总数.[ 表中要有 registername 字段]
308 * @return int
309 * @param String text
310 */

313 count = ((Integer) getHibernateTemplate().iterate(
314 "select count(*) from Info as info where info.registername = '" +
315 registerName + "'").next()).intValue();
316 return count;
317 }
319
320 /**
321 * 通过注册名取得一条记录,如有多条,只取第一条.[表中要有 registername字段]
322 * @param registername String
323 * @return Info
324 */

327 Info info = null;
328 String queryString =
329 " select info from Info as info where info.registername='" +
330 registerName + "' order by info.id desc";
331 //创建查询
332 Query query = getHibernateTemplate().createQuery(getSession(), queryString);
333 //记录生成
334 List list = query.list();
335 //把查询到的结果放入迭代器
336 iterator = list.iterator();

339 }
341 }
343
344 /**
345 * 通过注册名取得所有记录集合.[表中要有 registername字段]
346 * @param registername String
347 * @return Iterator
348 */
349 public Iterator getAllInfosByRegisterName(String registerName) throws

352 String queryString =
353 " select info from Info as info where info.registername='" +
354 registerName + "' order by info.id desc";
355 //创建查询
356 Query query = getHibernateTemplate().createQuery(getSession(), queryString);
357 //记录生成
358 List list = query.list();
359 //把查询到的结果放入迭代器
360 iterator = list.iterator();
361 return iterator;
362 }
364
365 /**
366 * 通过注册名取得记录列表.[表中要有 registername字段]
367 * @param registername String
368 * @return Iterator
369 */
370 public Iterator getInfosByRegisterName(String registerName, int position,

373 String queryString =
374 " select info from Info as info where info.registername='" +
375 registerName + "' order by info.id desc";
376 //创建查询
377 Query query = getHibernateTemplate().createQuery(getSession(), queryString);
378 //设置游标的起始点
379 query.setFirstResult(position);
380 //设置游标的长度
381 query.setMaxResults(length);
382 //记录生成
383 List list = query.list();
384 //把查询到的结果放入迭代器
385 iterator = list.iterator();
386 return iterator;
387 }
389
390 ////////////////////////////////////////////////////////
391 ///// ///
392 ///// 以下部份表中要有特定字段才能 ///
393 ///// ///
394 ////////////////////////////////////////////////////////
395
396 /**
397 * 取记录总数.[ 表中要有 board_id 字段]
398 * @return int
399 * @param String boardId
400 */

403
404 count = ((Integer) getHibernateTemplate().iterate(
405 "select count(*) from Info as info where info.boardId = '" + boardId +
406 "'").next()).intValue();
407
408 return count;
409 }
411
412 /**
413 * 通过版块名取得所有记录集合.[表中要有 board_id字段]
414 * @param BoardId String
415 * @return Iterator
416 */

419 String queryString = " select info from Info as info where info.boardId='" +
420 boardId + "' order by info.id desc";
421 //创建查询
422 Query query = getHibernateTemplate().createQuery(getSession(), queryString);
423 //记录生成
424 List list = query.list();
425 //把查询到的结果放入迭代器
426 iterator = list.iterator();
427 return iterator;
428 }
430
431 /**
432 * 通过版块名取得记录列表.[表中要有 board_id字段]
433 * @param BoardId String
434 * @return Iterator
435 */
436 public Iterator getInfosByBoard(String boardId, int position, int length) throws

439 String queryString = " select info from Info as info where info.boardId='" +
440 boardId + "' order by info.id desc";
441
442 //创建查询
443 Query query = getHibernateTemplate().createQuery(getSession(), queryString);
444 //设置游标的起始点
445 query.setFirstResult(position);
446 //设置游标的长度
447 query.setMaxResults(length);
448 //记录生成
449 List list = query.list();
450 //把查询到的结果放入迭代器
451 iterator = list.iterator();
452
453 return iterator;
454
455 }
457
458 /**
459 * 取符合条件记录总数.[ 表中要有 board_id 字段,title] 模糊查询title
460 * @return int
461 * @param String boardId ,String text
462 */

465
466 count = ((Integer) getHibernateTemplate().iterate(
467 "select count(*) from Info as info where info.boardId='" + boardId +
468 "' and info.title like '%" + text + "%'").next()).intValue();
469
470 return count;
471
472 }
474
475 /**
476 * 通过版块名取得记录列表.[表中要有 board_id字段] 模糊查询title
477 * @param String boardID,int position, int length
478 * @return Iterator
479 */
480 public Iterator getInfosByBoard(String boardId, int position, int length,

483 String queryString = " select info from Info as info where info.boardId='" +
484 boardId + "' and info.title like '%" + text +
485 "%' order by info.id desc";
486
487 //创建查询
488 Query query = getHibernateTemplate().createQuery(getSession(), queryString);
489 //设置游标的起始点
490 query.setFirstResult(position);
491 //设置游标的长度
492 query.setMaxResults(length);
493 //记录生成
494 List list = query.list();
495 //把查询到的结果放入迭代器
496 iterator = list.iterator();
497 return iterator;
498
499 }