利用getHibernateTemplate实现简单的操作

Posted 陈驰字新宇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用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;
    }

}

 

以上是关于利用getHibernateTemplate实现简单的操作的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 利用 Combine 实时监听网络服务器在线状态的极简实现

Hibernate hql getHibernateTemplate()常用方法汇总

休眠/春季:getHibernateTemplate().save(...) 冻结/挂起

getHibernateTemplate.save() - 如何获取受影响的行/新的自动增量

getHibernateTemplate()execute(HibernateCallback)小异常处理

[转]getHibernateTemplate出现的所有find方法的总结