SSH通用DAO

Date 2011-1-7 author:heguikun

 

package dao.impl;

 
import java.sql.SQLException;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.Example;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class BaseDao extends HibernateDaoSupport  {
 
 @SuppressWarnings("unchecked")//去掉黃色警告
 // 1.獲取 對象
 public Object get(Class clz, java.io.Serializable id) {
  return super.getHibernateTemplate().get(clz, id);
 }

 // 2. 添加對象
 public void save(Object item) {
  super.getHibernateTemplate().save(item);
 }

 // =============3.刪除,不用實例化,把主鍵傳進來=============
 public void delete(Class clz, java.io.Serializable id) {
  super.getHibernateTemplate().delete(
    super.getHibernateTemplate().get(clz, id));
 }
 //================3.3刪除 直接傳進對象 ,必須先實例化=============
 public void delete(Object entity) {
  super.getHibernateTemplate().delete(entity);
 }
 // 4.修改
 public void update(Object entity) {
  super.getHibernateTemplate().update(entity);
 }

 // 5.Hql 查詢 並控制分頁startIndex從第一條開始,pageSize每次查詢的長度

 
 public List Query(final String hql, final int startIndex,final int pageSize) {
  
  return super.getHibernateTemplate().find(hql);
  /*return super.getHibernateTemplate().executeFind(
    new HibernateCallback() {
     public Object doInHibernate(Session session)
       throws HibernateException, SQLException {
      org.hibernate.Query query = session.createQuery(hql);
      query.setFirstResult(startIndex);// 第幾條 開始
      query.setMaxResults(pageSize);// 查詢的條數
      return query.list();// 返回集合
     }
    });*/
 }

 // 6. 查詢某個表的總條數
 public Integer getTotalCount(Object entity) {
  Session session = super.getSession();
  String hqlString = "select count(*) from " + entity;// 拼接查詢
  System.out.println("查詢語句:"+hqlString);
  org.hibernate.Query query = session.createQuery(hqlString);
  Long numLong=(Long) query.uniqueResult();// 返回條數
   String numString=numLong+"";//不能一步幫Long轉爲整形
  return Integer.parseInt(numString);
  // -以爲每次查詢都是一個整數值,uniqueResult()獲取唯一的查詢結果
 }

 // 7. 根據 對象 查詢 Search(PetInfo.class,new PetInfo());
 // newPetInfo()得到表的所有信息,放某個已經實例化好的 對象並保護值時就會取到的是單個對象
 public List Search(final Class clz, final Object connection,
   final int startIndex, final int pageSize) {
  return super.getHibernateTemplate().executeFind(
    new HibernateCallback() {
     public Object doInHibernate(Session session)
       throws HibernateException, SQLException {
      Criteria criteria = session.createCriteria(clz).add(
        Example.create(connection));
      criteria.setFirstResult(startIndex);// 第幾條 開始
      criteria.setMaxResults(pageSize);// 查詢的條數
      return criteria.list();
     }
    });
 }
 
 //8懶加載
  public void initialize(Object entity) {
    super.getHibernateTemplate().initialize(entity);
  }
  public static void main(String[] args) {
   ApplicationContext context = new FileSystemXmlApplicationContext(
   "/WebRoot/WEB-INF/applicationContext.xml");// 初始化
   BaseDao dao = (BaseDao) context.getBean("baseDao");
   List list = dao.Query("from Psxm", 0, 100);
 
 if (list != null) {
  System.out.println(list.size());
  //System.out.println(list.get(0));
 } else {
  System.out.println("空");
 }
  
 }}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章