⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 boardhibernatedao.java

📁 一个jsp写的bbs
💻 JAVA
字号:
package com.laoer.bbscs.dao.hibernate;

import org.springframework.orm.hibernate3.support.*;
import com.laoer.bbscs.dao.BoardDAO;
import com.laoer.bbscs.bean.Board;
import java.util.*;
import com.laoer.bbscs.comm.Constant;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.HibernateCallback;

/**
 * <p>Title: Tianyi BBS</p>
 *
 * <p>Description: BBSCS</p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: Laoer.com</p>
 *
 * @author Gong Tianyi
 * @version 7.0
 */
public class BoardHibernateDAO
    extends HibernateDaoSupport implements BoardDAO {

  private static final String LOADS_BY_PARENTID = "from Board where parentID = ?";

  private static final String LOADS_ALL = "from Board";

  public static final String[] FIND_BOARDS = new String[3];

  static {
    FIND_BOARDS[Constant.FIND_BOARDS_BY_ORDER] = " order by orders";
    FIND_BOARDS[Constant.FIND_BOARDS_BY_MAINPOSTNUM] = " order by mainPostNum desc";
    FIND_BOARDS[Constant.FIND_BOARDS_BY_POSTNUM] = " order by postNum desc";
  }

  public static final String LOAD_NEXT_ORDER = "select max(orders) from Board where parentID = ?";

  private static final String LOAD_IDS_IN_USE = "select id from Board where parentID = ? and useStat = 1";

  public BoardHibernateDAO() {
    super();
  }

  /**
   * 保存或更新Board对象
   *
   * @param board Board
   * @return Board
   * @todo Implement this com.laoer.bbscs.dao.BoardDAO method
   */
  public Board saveBoard(Board board) {
    this.getHibernateTemplate().saveOrUpdate(board);
    return board;
  }

  /**
   * 根据ID取得Board对象
   *
   * @param id long
   * @return Board
   * @todo Implement this com.laoer.bbscs.dao.BoardDAO method
   */
  public Board getBoardByID(long id) {
    return (Board)this.getHibernateTemplate().get(Board.class, new Long(id));
  }

  /**
   * 根据parentID取得Board对象列表
   *
   * @param pid long
   * @return List
   * @todo Implement this com.laoer.bbscs.dao.BoardDAO method
   */
  public List findBoardsByParentID(long pid) {
    return this.getHibernateTemplate().find(LOADS_BY_PARENTID +
                                            FIND_BOARDS[Constant.FIND_BOARDS_BY_ORDER],
                                            new Long(pid));
  }

  /**
   * 根据parentID取得Board对象列表
   * @param pid long
   * @param useStat int
   * @param hidden int
   * @param orderType int
   * @return List
   * @todo Implement this com.laoer.bbscs.dao.BoardDAO method
   */
  public List findBoardsByParentID(long pid, int useStat, int hidden, int orderType) {
    StringBuffer q = new StringBuffer();
    q.append(LOADS_BY_PARENTID);
    if (useStat != -1) {
      q.append(" and useStat = ");
      q.append(useStat);
    }
    if (hidden != -1) {
      q.append(" and isHidden = ");
      q.append(hidden);
    }
    q.append(FIND_BOARDS[orderType]);

    return this.getHibernateTemplate().find(q.toString(), new Long(pid));
  }

  /**
   *
   * @return List
   */
  public List findBoardsAll() {
    return this.getHibernateTemplate().find(LOADS_ALL);
  }

  /**
   * 根据parentID预取得Board序列
   *
   * @param pid long
   * @return int
   * @todo Implement this com.laoer.bbscs.dao.BoardDAO method
   */
  public int getNextOrder(long pid) {
    List l = getHibernateTemplate().find(LOAD_NEXT_ORDER, new Long(pid));
    if (l != null && !l.isEmpty()) {
      if (l.get(0) == null) {
        return 5;
      }
      else {
        return ( (Integer) l.get(0)).intValue() + 5;
      }
    }
    else {
      return 5;
    }
  }

  /**
   * 取得帖子总数(主帖或全部)
   * @param mainorall int
   * @param useStat int
   * @param hidden int
   * @return int
   * @todo Implement this com.laoer.bbscs.dao.BoardDAO method
   */
  public int getPostSumNum(final int mainorall, final int useStat, final int hidden) {
    int sum = 0;

    List list = getHibernateTemplate().executeFind(new HibernateCallback() {
      public Object doInHibernate(Session s) throws HibernateException {
        Criteria c = s.createCriteria(Board.class);
        if (mainorall == 0) {
          c.setProjection(Projections.projectionList().add(
              Projections.sum("mainPostNum")));
        }
        if (mainorall == 1) {
          c.setProjection(Projections.projectionList().add(
              Projections.sum("postNum")));
        }
        if (useStat != -1) {
          c.add(Restrictions.eq("useStat", new Integer(useStat)));
        }
        if (hidden != -1) {
          c.add(Restrictions.eq("isHidden", new Integer(hidden)));
        }
        return c.list();
      }
    });
    if (!list.isEmpty()) {
      Object obj = (Object) list.get(0);
      if (obj != null) {
        sum = ( (Integer) obj).intValue();
      }
    }
    return sum;
  }

  /**
   * 删除Board对象
   *
   * @param board Board
   * @todo Implement this com.laoer.bbscs.dao.BoardDAO method
   */
  public void removeBoard(Board board) {
    this.getHibernateTemplate().delete(board);
  }

  public List findBoardsInIDs(final List ids, final int useStat, final int hidden) {
    return getHibernateTemplate().executeFind(new HibernateCallback() {
      public Object doInHibernate(Session s) throws HibernateException {
        Criteria c = s.createCriteria(Board.class);
        if (ids == null) {
          List idss = new ArrayList();
          idss.add(new Long(0));
          c.add(Restrictions.in("id", idss));
        }
        else if (ids.isEmpty()) {
          ids.add(new Long(0));
          c.add(Restrictions.in("id", ids));
        }
        else {
          c.add(Restrictions.in("id", ids));
        }
        if (useStat != -1) {
          c.add(Restrictions.eq("useStat", new Integer(useStat)));
        }
        if (hidden != -1) {
          c.add(Restrictions.eq("isHidden", new Integer(hidden)));
        }
        c.addOrder(Order.asc("orders"));
        return c.list();
      }
    });
  }

  public List findBoardsNeedCount(final int useStat, final int hidden) {
    return getHibernateTemplate().executeFind(new HibernateCallback() {
      public Object doInHibernate(Session s) throws HibernateException {
        Criteria c = s.createCriteria(Board.class);

        c.add(Restrictions.or(Restrictions.eq("boardType", new Integer(3)),
                              Restrictions.eq("boardType", new Integer(4))));

        if (useStat != -1) {
          c.add(Restrictions.eq("useStat", new Integer(useStat)));
        }
        if (hidden != -1) {
          c.add(Restrictions.eq("isHidden", new Integer(hidden)));
        }
        c.addOrder(Order.desc("mainPostNum"));
        c.addOrder(Order.desc("postNum"));
        return c.list();
      }
    });
  }

  public List findBoardsByParentID(final long pid, final int useStat, final int hidden) {
    return getHibernateTemplate().executeFind(new HibernateCallback() {
      public Object doInHibernate(Session s) throws HibernateException {
        Criteria c = s.createCriteria(Board.class);
        c.add(Restrictions.eq("parentID", new Long(pid)));
        if (useStat != -1) {
          c.add(Restrictions.eq("useStat", new Integer(useStat)));
        }
        if (hidden != -1) {
          c.add(Restrictions.eq("isHidden", new Integer(hidden)));
        }
        return c.list();
      }
    });
  }

  public List findBoardsIdByParentIDInUse(long pid) {
    return this.getHibernateTemplate().find(LOAD_IDS_IN_USE, new Long(pid));
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -