SSH中继承HibernateDaoSupport 的通用Dao

原创 2011年01月07日 15:34:00

package dao.impl;

 2011-01-07
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转为整形

  session .close();
  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("空");
 }
  
 }}

相关文章推荐

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

ssh整合之HibernateDaoSupport的使用

继承HibernateDaoSupport有三种方式: 1. Java代码   @Component("logDAO")    public class LogDA...

HibernateDaoSupport的用法。。。

Spring为Hibernate提供了一个HibernateDaoSupport的基类方便我们来处理数据信息,只用继承HibernateDaoSupport就可以了,使用hibernateDaoSup...

继承HibernateDaoSupport实现DAO(spring整合hibernate)

Spring为Hibernate的DAO提供工具类:HibernateDaoSupport。该类主要提供如下两个方法,方便DAO的实现:    public final HibernateTempla...

HibernateTemplate、HibernateDaoSupport两种方法实现增删改查Good

Spring+Hibernate两种方法实现增删改查     首先,定义一个Customer的bean类,设置好Customer.hbm.xml文件。再定义好一个Dao接口。准备好一个jdbc.pr...
  • Baple
  • Baple
  • 2014年04月10日 14:23
  • 43244

hibernateTemplate 与session的区别 HibernateTemplate、HibernateDaoSupport两种方法实现增删改查

HibernateTemplate与session的区别如下: 1.使用HibernateTemplate,很重要的原因不想直接控制事务,不想直接去获取,打开Session,开始一个事务,处理异常,提...

SSH的一个BaseDao继承HibernateDaoSupport(二)

之前做过一个SSH中BaseDao的设计,当时没有做一些修改,里面的方法也有许多不完善的部分。 抽空整理了一下,没有很大改动,只是加入了自己的一部分想法和注释,不求尽善尽美,仍有很大的改动空间。 ...
  • sqjhwl
  • sqjhwl
  • 2013年05月07日 10:24
  • 1266

继承HibernateDaoSupport进行CURD操作

  HibernateDaoSupport将hibernate的操作进行了大量的简化,但在使用HibernateDaoSupport里面自带的getHibernateTemplate()方法时要...

解决继承HibernateDaoSupport用getHibernateTemplate()无法更新的问题

1getHibernateTemplate().update()只能以实体类为参数,不能传入HQL语句,而实体类是要从HQL查询出来的持久化对象,而不能是new出来得对象 2可以用Session,然...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SSH中继承HibernateDaoSupport 的通用Dao
举报原因:
原因补充:

(最多只允许输入30个字)