引用"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 */
31 public InfoDAOImpl ( ) {
33 }
35
36 /**
37 * 增加记录
38 * @param info Info
39 */
40 public void setInfo (Info info ) throws Exception {
42 }
44
45 /**
46 * 通过ID取得记录
47 * @param id String
48 * @return Info
49 */
50 public Info getInfoById ( String id ) throws Exception {
52 return info;
53 }
55
56 /**
57 * 修改记录
58 * @param Info info
59 */
60 public void modifyInfo (Info info ) throws Exception {
62 }
64
65 /**
66 * 删除记录
67 * @param Info info
68 */
69 public void removeInfo (Info info ) throws Exception {
71 }
73
74
75 / ///
76 /以下部份不带审核功能 ///
77 / ///
78
79
80 /**
81 * 取记录总数
82 * @return int
83 */
84 public int getInfosCount ( ) throws Exception {
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 */
97 public Iterator getAllInfos ( ) throws Exception {
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 */
111 public Iterator getInfos ( int position, int length ) throws Exception {
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 */
132 public Info getFirstInfo ( ) throws Exception {
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 ( );
141 if (iterator. hasNext ( ) ) {
143 }
145 }
147
148 /**
149 * 取最后一条记录
150 * @throws Exception
151 * @return Station
152 */
153 public Info getLastInfo ( ) throws Exception {
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 ( );
162 if (iterator. hasNext ( ) ) {
164 }
166
167 }
169
170
171 / ///
172 / 以下部份表中要有特定字段才能 ///
173 / ///
174
175
176 /**
177 * 取符合条件记录总数, [表中要有 isperson 字段]
178 * @return int
179 * @param int isPerson
180 */
181
182 public int getInfosCountByIsperson ( int isPerson ) throws Exception {
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
198 public Iterator getAllInfosByIsperson ( int isPerson ) throws Exception {
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
216 Exception {
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 */
244 public int getInfosCount ( String text ) throws Exception {
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
259 public Iterator getAllInfos ( String text ) throws Exception {
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
280 Exception {
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 */
311 public int getInfosCountByRegisterName ( String registerName ) throws Exception {
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 */
325 public Info getInfoByRegisterName ( String registerName ) throws Exception {
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 ( );
337 if (iterator. hasNext ( ) ) {
339 }
341 }
343
344 /**
345 * 通过注册名取得所有记录集合.[表中要有 registername字段]
346 * @param registername String
347 * @return Iterator
348 */
349 public Iterator getAllInfosByRegisterName ( String registerName ) throws
350 Exception {
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,
371 int length ) throws Exception {
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 */
401 public int getInfosCountByBoard ( String boardId ) throws Exception {
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 */
417 public Iterator getAllInfosByBoard ( String boardId ) throws Exception {
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
437 Exception {
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 */
463 public int getInfosCountByBoard ( String boardId, String text ) throws Exception {
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,
481 String text ) throws Exception {
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 }