利用getHibernateTemplate實現簡單的操作


package org.tarena.dao;

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

import javax.annotation.Resource;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;
import org.tarena.entity.Cost;

@Repository
@Scope("prototype")
public class CostDaoImpl extends HibernateDaoSupport implements CostDao {
    
    //用注解才要這么寫,否則不用
    @Resource//注入sf
    public void setMySessionFactory(SessionFactory sf){
        super.setSessionFactory(sf);
    }

    /**
     * 單個查找
     */
    public Cost findById(Integer costId) {
        //還有load方法,延遲加載
        Cost cost = getHibernateTemplate().get(Cost.class, costId);
        return cost;
    }

    /**
     * 新增
     */
    public void save(Cost cost) {
        getHibernateTemplate().save(cost);
    }

    /**
     * 刪除
     */
    public void delete(Cost cost) {
        getHibernateTemplate().delete(cost);
    }

    /**
     * 更新
     */
    public void update(Cost cost) {
        getHibernateTemplate().update(cost);
    }

    /**
     * 所有查找
     */
    public List<Cost> findAll() {
        String hql = "from Cost";
        List<Cost> list = getHibernateTemplate().find(hql);
        return list;
    }

    /**
     * 統計個數
     */
    public int count() {
        String hql = "select count(*) from Cost";
        List list = getHibernateTemplate().find(hql);
        int count = Integer.parseInt(list.get(0).toString());
        return count;
    }

    /**
     * 分頁查詢
     */
    public List<Cost> findPage(final int page, final int pageSize) {
        List<Cost> list = (List<Cost>) getHibernateTemplate().execute(new HibernateCallback<Object>() {
            public Object doInHibernate(Session session)
                    throws HibernateException, SQLException {
                //在方法體中使用session對象
                String hql = "from Cost";
                Query query = session.createQuery(hql);
                
                int begin = (page - 1)*pageSize;
                query.setFirstResult(begin);
                query.setMaxResults(pageSize);
                return query.list();
            }
        });
        return list;
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM