引用"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 }