天天看点

Hibernate+Spring 对DAO的处理实列

Hibernate+Spring 对DAO的处理实列!

引用"Spring"手册上的话说: Hibernate+Spring显然是天生的结合.

下面是我用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

*/

public class InfoDAOImpl extends HibernateDaoSupport implements IInfoDAO {

  /**

   * 构造函数

   */

  public InfoDAOImpl() {

    super();

  }

   * 增加记录

   * @param info Info

  public void setInfo(Info info) throws Exception {

    getHibernateTemplate().save(info);

   * 通过ID取得记录

   * @param id String

   * @return Info

  public Info getInfoById(String id) throws Exception {

    Info info = (Info) getHibernateTemplate().load(Info.class, id);

    return info;

   * 修改记录

   * @param Info info

  public void modifyInfo(Info info) throws Exception {

    getHibernateTemplate().update(info);

   * 删除记录

  public void removeInfo(Info info) throws Exception {

    getHibernateTemplate().delete(info);

  ////////////////////////////////////////////////////////

  /////                                                ///

  /////以下部份不带审核功能                              ///

   * 取记录总数

   * @return int

  public int getInfosCount() throws Exception {

    int count = 0;

    String queryString = "select count(*) from Info";

    count = ((Integer) getHibernateTemplate().iterate(queryString).next()).

            intValue();

    return count;

   * 取所有记录集合

   * @return Iterator

  public Iterator getAllInfos() throws Exception {

    Iterator iterator = null;

    String queryString = " select info from Info as info order by info.iddesc";

    List list = getHibernateTemplate().find(queryString);

    iterator = list.iterator();

    return iterator;

   * 取记录集合

   * @param int position, int length

  public Iterator getInfos(int position, int length) throws Exception {

    Query query = getHibernateTemplate().createQuery(getSession(), queryString);

    //设置游标的起始点

    query.setFirstResult(position);

    //设置游标的长度

    query.setMaxResults(length);

    //记录生成

    List list = query.list();

    //把查询到的结果放入迭代器

   * 取第一条记录

   * @throws Exception

   * @return Station

  public Info getFirstInfo() throws Exception {

    Info info = null;

    String queryString = "select info from Info as info order by info.iddesc";

    if (iterator.hasNext()) {

      info = (Info) iterator.next();

    }

   * 取最后一条记录

  public Info getLastInfo() throws Exception {

    String queryString = "select info from Info as info order by info.idasc";

  ///// 以下部份表中要有特定字段才能Õ吩诵袪 牳鋈撕推笠禒    ///

   * 取符合条件记录总数, [表中要有 isperson 字段]

   * @param int isPerson

  public int getInfosCountByIsperson(int isPerson) throws Exception {

    String queryString =

        "select count(*) from Info as info where info.isperson =" + isPerson;

   * 取所有符合条件记录集合, 模糊查询条件.[表中要有 isperson 字段]

  public Iterator getAllInfosByIsperson(int isPerson) throws Exception {

    String queryString = " select info from Info as info where info.isperson=" +

                         isPerson + " order by info.id desc";

   * 取符合条件记录集合, 模糊查询条件.[表中要有 isperson 字段]

   * @param int isPerson,int position, int length

  public Iterator getInfosByIsperson(int isPerson, int position, int length)throws

      Exception {

    //创建查询

  ///// 以下部份表中要有特定字段才能Õ吩诵袪  查询部份      ///

  ///////////////////////////////////////////////////////

   * 取符合条件记录总数, 模糊查询条件.[表中要有 title 字段]

   * @param String text

  public int getInfosCount(String text) throws Exception {

    count = ((Integer) getHibernateTemplate().iterate(

        "select count(*) from Info as info where info.title like '%" + text +

        "%'").next()).intValue();

   * 取所有符合条件记录集合, 模糊查询条件.[表中要有 title 字段]

  public Iterator getAllInfos(String text) throws Exception {

        " select info from Info as info where info.title like '%" + text +

        "%' order by info.id desc";

   * 取符合条件记录集合, 模糊查询条件.[表中要有 title 字段]

   * @param String text,int position, int length

  public Iterator getInfos(String text, int position, int length) throws

  ///// 以下部份表中要有特定字段才能Õ吩诵袪 犠⒉嵯喙貭     ///

   * 取符合条件记录总数.[ 表中要有 registername 字段]

  public int getInfosCountByRegisterName(String registerName) throwsException {

        "select count(*) from Info as info where info.registername = '" +

        registerName + "'").next()).intValue();

   * 通过注册名取得一条记录,如有多条,只取第一条.[表中要有 registername字段]

   * @param registername String

  public Info getInfoByRegisterName(String registerName) throws Exception {

        " select info from Info as info where info.registername='" +

        registerName + "' order by info.id desc";

   * 通过注册名取得所有记录集合.[表中要有 registername字段]

  public Iterator getAllInfosByRegisterName(String registerName) throws

   * 通过注册名取得记录列表.[表中要有 registername字段]

  public Iterator getInfosByRegisterName(String registerName, int position,

                                         int length) throws Exception {

  ///// 以下部份表中要有特定字段才能Õ吩诵袪   犑餍桶婵闋    ///

   * 取记录总数.[ 表中要有 board_id 字段]

   * @param String boardId

  public int getInfosCountByBoard(String boardId) throws Exception {

        "select count(*) from Info as info where info.boardId = '" + boardId +

        "'").next()).intValue();

   * 通过版块名取得所有记录集合.[表中要有 board_id字段]

   * @param BoardId String

  public Iterator getAllInfosByBoard(String boardId) throws Exception {

    String queryString = " select info from Info as info where info.boardId='" +

                         boardId + "' order by info.id desc";

   * 通过版块名取得记录列表.[表中要有 board_id字段]

  public Iterator getInfosByBoard(String boardId, int position, int length)throws

   * 取符合条件记录总数.[ 表中要有 board_id 字段,title]  模糊查询title

   * @param String boardId ,String text

  public int getInfosCountByBoard(String boardId, String text) throwsException {

        "select count(*) from Info as info where info.boardId='" + boardId +

        "' and info.title like '%" + text + "%'").next()).intValue();

   * 通过版块名取得记录列表.[表中要有 board_id字段]  模糊查询title

   * @param String boardID,int position, int length

  public Iterator getInfosByBoard(String boardId, int position, int length,

                                  String text) throws Exception {

                         boardId + "' and info.title like '%" + text +

                         "%' order by info.id desc";

  /////以下部份带有审核功能                              ///

   * @param int isAuditing

  public int getInfosCount(int isAuditing) throws Exception {

继续阅读