下面是我用spring處理的一個HibernateDAO實例,可以看到,代碼量大大減少了.
java代碼: |
package infoweb.dao; import java.util.List; import java.util.Iterator; import infoweb.pojo.Info; import net.sf.hibernate.HibernateException; import net.sf.hibernate.Query; import net.sf.hibernate.Session; import org.springframework.orm.hibernate.HibernateCallback; import org.springframework.orm.hibernate.support.HibernateDaoSupport; /** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: </p> * @author 段洪杰 * @version 1.0 */ publicclass InfoDAOImpl extends HibernateDaoSupport implements IInfoDAO { /** * 構造函數 */ public InfoDAOImpl(){ super(); } /** * 增加記錄 * @param info Info */ publicvoid setInfo(Info info)throwsException{ getHibernateTemplate().save(info); } /** * 通過ID取得記錄 * @param id String * @return Info */ public Info getInfoById(String id)throwsException{ Info info = (Info) getHibernateTemplate().load(Info.class, id); return info; } /** * 修改記錄 * @param Info info */ publicvoid modifyInfo(Info info)throwsException{ getHibernateTemplate().update(info); } /** * 刪除記錄 * @param Info info */ publicvoid removeInfo(Info info)throwsException{ getHibernateTemplate().delete(info); } //////////////////////////////////////////////////////// ///// /// /////以下部份不帶審核功能 /// ///// /// //////////////////////////////////////////////////////// /** * 取記錄總數 * @return int */ publicint getInfosCount()throwsException{ int count = 0; String queryString = "select count(*) from Info"; count = ((Integer) getHibernateTemplate().iterate(queryString).next()). intValue(); return count; } /** * 取所有記錄集合 * @return Iterator */ publicIterator getAllInfos()throwsException{ Iterator iterator = null; String queryString = " select info from Info as info order by info.id desc"; List list = getHibernateTemplate().find(queryString); iterator = list.iterator(); return iterator; } /** * 取記錄集合 * @return Iterator * @param int position, int length */ publicIterator getInfos(int position, int length)throwsException{ Iterator iterator = null; String queryString = " select info from Info as info order by info.id desc"; Query query = getHibernateTemplate().createQuery(getSession(), queryString); //設置游標的起始點 query.setFirstResult(position); //設置游標的長度 query.setMaxResults(length); //記錄生成 List list = query.list(); //把查詢到的結果放入迭代器 iterator = list.iterator(); return iterator; } /** * 取第一條記錄 * @throws Exception * @return Station */ public Info getFirstInfo()throwsException{ Iterator iterator = null; Info info = null; String queryString = "select info from Info as info order by info.id desc"; Query query = getHibernateTemplate().createQuery(getSession(), queryString); //記錄生成 List list = query.list(); //把查詢到的結果放入迭代器 iterator = list.iterator(); if(iterator.hasNext()){ info = (Info) iterator.next(); } return info; } /** * 取最后一條記錄 * @throws Exception * @return Station */ public Info getLastInfo()throwsException{ Iterator iterator = null; Info info = null; String queryString = "select info from Info as info order by info.id asc"; Query query = getHibernateTemplate().createQuery(getSession(), queryString); //記錄生成 List list = query.list(); //把查詢到的結果放入迭代器 iterator = list.iterator(); if(iterator.hasNext()){ info = (Info) iterator.next(); } return info; } //////////////////////////////////////////////////////// ///// /// ///// 以下部份表中要有特定字段才能Õ吩誦袪 牳鋈撕推笠禒 /// ///// /// //////////////////////////////////////////////////////// /** * 取符合條件記錄總數, [表中要有 isperson 字段] * @return int * @param int isPerson */ publicint getInfosCountByIsperson(int isPerson)throwsException{ int count = 0; String queryString = "select count(*) from Info as info where info.isperson =" + isPerson; count = ((Integer) getHibernateTemplate().iterate(queryString).next()). intValue(); return count; } /** * 取所有符合條件記錄集合, 模糊查詢條件.[表中要有 isperson 字段] * @return Iterator * @param int isPerson */ publicIterator getAllInfosByIsperson(int isPerson)throwsException{ Iterator iterator = null; String queryString = " select info from Info as info where info.isperson =" + isPerson + " order by info.id desc"; List list = getHibernateTemplate().find(queryString); //把查詢到的結果放入迭代器 iterator = list.iterator(); return iterator; } /** * 取符合條件記錄集合, 模糊查詢條件.[表中要有 isperson 字段] * @return Iterator * @param int isPerson,int position, int length */ publicIterator getInfosByIsperson(int isPerson, int position, int length)throws Exception{ Iterator iterator = null; String queryString = " select info from Info as info where info.isperson =" + isPerson + " order by info.id desc"; //創建查詢 Query query = getHibernateTemplate().createQuery(getSession(), queryString); //設置游標的起始點 query.setFirstResult(position); //設置游標的長度 query.setMaxResults(length); //記錄生成 List list = query.list(); //把查詢到的結果放入迭代器 iterator = list.iterator(); return iterator; } //////////////////////////////////////////////////////// ///// /// ///// 以下部份表中要有特定字段才能Õ吩誦袪 查詢部份 /// ///// /// /////////////////////////////////////////////////////// /** * 取符合條件記錄總數, 模糊查詢條件.[表中要有 title 字段] * @return int * @param String text */ publicint getInfosCount(String text)throwsException{ int count = 0; count = ((Integer) getHibernateTemplate().iterate( "select count(*) from Info as info where info.title like '%" + text + "%'").next()).intValue(); return count; } /** * 取所有符合條件記錄集合, 模糊查詢條件.[表中要有 title 字段] * @return Iterator * @param String text */ publicIterator getAllInfos(String text)throwsException{ Iterator iterator = null; String queryString = " select info from Info as info where info.title like '%" + text + "%' order by info.id desc"; //創建查詢 Query query = getHibernateTemplate().createQuery(getSession(), queryString); //記錄生成 List list = query.list(); //把查詢到的結果放入迭代器 iterator = list.iterator(); return iterator; } /** * 取符合條件記錄集合, 模糊查詢條件.[表中要有 title 字段] * @return Iterator * @param String text,int position, int length */ publicIterator getInfos(String text, int position, int length)throws Exception{ Iterator iterator = null; String queryString = " select info from Info as info where info.title like '%" + text + "%' order by info.id desc"; //創建查詢 Query query = getHibernateTemplate().createQuery(getSession(), queryString); //設置游標的起始點 query.setFirstResult(position); //設置游標的長度 query.setMaxResults(length); //記錄生成 List list = query.list(); //把查詢到的結果放入迭代器 iterator = list.iterator(); return iterator; } //////////////////////////////////////////////////////// ///// /// ///// 以下部份表中要有特定字段才能Õ吩誦袪 犠⒉嵯喙貭 /// ///// /// //////////////////////////////////////////////////////// /** * 取符合條件記錄總數.[ 表中要有 registername 字段] * @return int * @param String text */ publicint getInfosCountByRegisterName(String registerName)throwsException{ int count = 0; count = ((Integer) getHibernateTemplate().iterate( "select count(*) from Info as info where info.registername = '" + registerName + "'").next()).intValue(); return count; } /** * 通過注冊名取得一條記錄,如有多條,只取第一條.[表中要有 registername字段] * @param registername String * @return Info */ public Info getInfoByRegisterName(String registerName)throwsException{ Iterator iterator = null; Info info = null; String queryString = " select info from Info as info where info.registername='" + registerName + "' order by info.id desc"; //創建查詢 Query query = getHibernateTemplate().createQuery(getSession(), queryString); //記錄生成 List list = query.list(); //把查詢到的結果放入迭代器 iterator = list.iterator(); if(iterator.hasNext()){ info = (Info) iterator.next(); } return info; } /** * 通過注冊名取得所有記錄集合.[表中要有 registername字段] * @param registername String * @return Iterator */ publicIterator getAllInfosByRegisterName(String registerName)throws Exception{ Iterator iterator = null; String queryString = " select info from Info as info where info.registername='" + registerName + "' order by info.id desc"; //創建查詢 Query query = getHibernateTemplate().createQuery(getSession(), queryString); //記錄生成 List list = query.list(); //把查詢到的結果放入迭代器 iterator = list.iterator(); return iterator; } /** * 通過注冊名取得記錄列表.[表中要有 registername字段] * @param registername String * @return Iterator */ publicIterator getInfosByRegisterName(String registerName, int position, int length)throwsException{ Iterator iterator = null; String queryString = " select info from Info as info where info.registername='" + registerName + "' order by info.id desc"; //創建查詢 Query query = getHibernateTemplate().createQuery(getSession(), queryString); //設置游標的起始點 query.setFirstResult(position); //設置游標的長度 query.setMaxResults(length); //記錄生成 List list = query.list(); //把查詢到的結果放入迭代器 iterator = list.iterator(); return iterator; } //////////////////////////////////////////////////////// ///// /// ///// 以下部份表中要有特定字段才能Õ吩誦袪 犑饜桶嬋闋 /// ///// /// //////////////////////////////////////////////////////// /** * 取記錄總數.[ 表中要有 board_id 字段] * @return int * @param String boardId */ publicint getInfosCountByBoard(String boardId)throwsException{ int count = 0; count = ((Integer) getHibernateTemplate().iterate( "select count(*) from Info as info where info.boardId = '" + boardId + "'").next()).intValue(); return count; } /** * 通過版塊名取得所有記錄集合.[表中要有 board_id字段] * @param BoardId String * @return Iterator */ publicIterator getAllInfosByBoard(String boardId)throwsException{ Iterator iterator = null; String queryString = " select info from Info as info where info.boardId='" + boardId + "' order by info.id desc"; //創建查詢 Query query = getHibernateTemplate().createQuery(getSession(), queryString); //記錄生成 List list = query.list(); //把查詢到的結果放入迭代器 iterator = list.iterator(); return iterator; } /** * 通過版塊名取得記錄列表.[表中要有 board_id字段] * @param BoardId String * @return Iterator */ publicIterator getInfosByBoard(String boardId, int position, int length)throws Exception{ Iterator iterator = null; String queryString = " select info from Info as info where info.boardId='" + boardId + "' order by info.id desc"; //創建查詢 Query query = getHibernateTemplate().createQuery(getSession(), queryString); //設置游標的起始點 query.setFirstResult(position); //設置游標的長度 query.setMaxResults(length); //記錄生成 List list = query.list(); //把查詢到的結果放入迭代器 iterator = list.iterator(); return iterator; } /** * 取符合條件記錄總數.[ 表中要有 board_id 字段,title] 模糊查詢title * @return int * @param String boardId ,String text */ publicint getInfosCountByBoard(String boardId, String text)throwsException{ int count = 0; count = ((Integer) getHibernateTemplate().iterate( "select count(*) from Info as info where info.boardId='" + boardId + "' and info.title like '%" + text + "%'").next()).intValue(); return count; } /** * 通過版塊名取得記錄列表.[表中要有 board_id字段] 模糊查詢title * @param String boardID,int position, int length * @return Iterator */ publicIterator getInfosByBoard(String boardId, int position, int length, String text)throwsException{ Iterator iterator = null; String queryString = " select info from Info as info where info.boardId='" + boardId + "' and info.title like '%" + text + "%' order by info.id desc"; //創建查詢 Query query = getHibernateTemplate().createQuery(getSession(), queryString); //設置游標的起始點 query.setFirstResult(position); //設置游標的長度 query.setMaxResults(length); //記錄生成 List list = query.list(); //把查詢到的結果放入迭代器 iterator = list.iterator(); return iterator; } |